#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QObject>
#include <QDebug>
#include <QtXml/QDomDocument>
#include <QFile>
#include <QIODevice>
#include <QFileDialog>
#include <QMessageBox>
#include <QTextCodec>
#include <QTableView>
#include <QStandardItemModel>
#include <QBrush>
#include <QColor>
#include <QByteArray>
#include <QItemSelectionModel>
#include <QModelIndex>
#include <QAbstractItemView>
#include <QComboBox>
#include <QMap>
#include <QMapIterator>
QVector<QString> MainWindow::s_strVec;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
isOpenXmlFile(false),
_xmlFilePath(""),
findType(name_),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setMaximumSize(800,620);
this->setMinimumSize(800,620);
initTableViem();
initSlotfun();
s_strVec.append(QString("name"));
s_strVec.append(QString("age"));
s_strVec.append(QString("sid"));
//setFindType(static_cast<FindType>(age_));
// qDebug()<<s_strVec.at(getFindType())<<" "
// <<s_strVec.at(1)<<" "
// <<s_strVec.at(2)
// << "age" <<age_ ;
}
MainWindow::~MainWindow()
{
delete ui;
isOpenXmlFile = false;
}
void MainWindow::on_readBut_clicked()
{
qDebug() << "dddd" ;
QFileDialog filedia;
_xmlFilePath = filedia.getOpenFileName(this,tr("Save File")
,QDir::currentPath()
,tr("textxml *.xml"));
qDebug() <<"xmlFilePath is:"<< _xmlFilePath;
if(_xmlFilePath.isEmpty())
{
return ;
}
else
{
if(_xmlFilePath.endsWith(".xml") || _xmlFilePath.endsWith(".XML"))
{
openXmlFileToView();//
openXmlFile();
}
else
{
QMessageBox msg;
msg.setText(tr("请则xml后缀的文件"));
msg.exec();
}
}
}
/** 写入单击事件的槽函数*/
void MainWindow::on_writeBut_clicked()
{
if(!pleaseOpenXmlFile())
{
return;
}
qDebug() << "wwww" ;
/*
tablemViewmodel->setItem(0, 0, new QStandardItem("张三"));
tablemViewmodel->setItem(0, 1, new QStandardItem("20120202"));
tablemViewmodel->setItem(0, 2, new QStandardItem("男"));
tablemViewmodel->setItem(0, 3, new QStandardItem("18"));
tablemViewmodel->setItem(0, 4, new QStandardItem("土木学院"));
*/
/*
tablemViewmodel->item(0,0)->setTextAlignment(Qt::AlignCenter);
tablemViewmodel->item(0,1)->setTextAlignment(Qt::AlignCenter);
tablemViewmodel->item(0,2)->setTextAlignment(Qt::AlignCenter);
tablemViewmodel->item(0,3)->setTextAlignment(Qt::AlignCenter);
//tablemViewmodel->item(0,4)->setTextAlignment(Qt::AlignCenter);
tablemViewmodel->item(0,0)->setForeground(QBrush(QColor(255,0,0)));
*/
}
/** 初始化tableview界面的*/
void MainWindow::initTableViem()
{
tablemViewmodel = new QStandardItemModel();
tablemViewmodel->setHorizontalHeaderItem(0, new QStandardItem(QObject::tr("ID")));
tablemViewmodel->setHorizontalHeaderItem(1, new QStandardItem(QObject::tr("姓名")));
tablemViewmodel->setHorizontalHeaderItem(2, new QStandardItem(QObject::tr("年龄")));
tablemViewmodel->setHorizontalHeaderItem(3, new QStandardItem(QObject::tr("性别")));
//tablemViewmodel->setHorizontalHeaderItem(4, new QStandardItem(QObject::tr("College")));
ui->showTableView->setModel(tablemViewmodel);
ui->showTableView->setColumnWidth(0,200);
ui->showTableView->setColumnWidth(1,150);
ui->showTableView->setColumnWidth(2,100);
ui->showTableView->setColumnWidth(3,148);
//ui->showTableView->setColumnWidth(4,100);
//设置表格为整行选择
ui->showTableView->setSelectionBehavior(QAbstractItemView::SelectRows);
}
/** 初始化槽函数*/
void MainWindow::initSlotfun()
{
connect(ui->deleteBut,SIGNAL(clicked()),this,SLOT(delOntTableViewItem()));
//connect(ui->showTableView,SIGNAL(windowIconTextChanged(QString)),this,SLOT(modifyTableView(QString)));
//connect(ui->showTableView,SIGNAL(entered(QModelIndex)),this,SLOT(modifyTableView(QString)));
//the mune is connect save about slot
connect(ui->action_xml_open,SIGNAL(triggered()),this,SLOT(on_readBut_clicked()));
connect(ui->action_save_All,SIGNAL(triggered()),this,SLOT(on_saveAllBut_clicked()));
connect(ui->action_save_add,SIGNAL(triggered()),this,SLOT(on_saveaddBut_clicked()));
connect(ui->action_save_del,SIGNAL(triggered()),this,SLOT(on_savedelBut_clicked()));
connect(ui->action_save_update,SIGNAL(triggered()),this,SLOT(on_saveupdateBut_clicked()));
// about delete slot
connect(ui->action_select_row,SIGNAL(triggered()),this,SLOT(on_deleteBut_clicked()));
connect(ui->action_all_Row,SIGNAL(triggered()),this,SLOT(on_clearBut_clicked()));
// about replace backout
connect(ui->action_re_all , SIGNAL(triggered()),this,SLOT(clearAllMap()));
// replace one of all ;
connect(ui->action_re_add,SIGNAL(triggered()),this,SLOT(backoutAddMap()));
connect(ui->action_re_del,SIGNAL(triggered()),this,SLOT(backoutDelMap()));
connect(ui->action_re_update,SIGNAL(triggered()),this,SLOT(backoutUpdateMap()));
//about refresh tableview info
connect(ui->action_refresh,SIGNAL(triggered()),this,SLOT(refreshSlot()));
connect(ui->comboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(comboBoxSlect(int)));
}
/** 插入一空行进行编辑数据最后保存*/
void MainWindow::on_insertBut_clicked()
{
if(!pleaseOpenXmlFile())
{
return;
}
int row = tablemViewmodel->rowCount();
if(0 == row)
{
QMessageBox msgBox;
msgBox.setText("You haven't open the xml's file ");
msgBox.setInformativeText("Do you want to save your changes?");
msgBox.setStandardButtons(QMessageBox::Open| QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Cancel);
int ret = msgBox.exec();
switch (ret) {
case QMessageBox::Open:
on_readBut_clicked();//打开文件进行读取xml
break;
case QMessageBox::Cancel:
break;
default:
break;
}
}
else
{
// 插入一行空数据在最后一行的
tablemViewmodel->setItem(row,0,new QStandardItem(""));
tablemViewmodel->setItem(row,1,new QStandardItem(""));
tablemViewmodel->setItem(row,2,new QStandardItem(""));
tablemViewmodel->setItem(row,3,new QStandardItem(""));
qDebug()<<"insert but"<< row << "row + 1" << row +1;
}
}
void MainWindow::on_deleteBut_clicked()
{
if(!pleaseOpenXmlFile())
{
return;
}
//delTableViewItem();
delTableViewItem2();//删除的是界面的信息
//deleteToxmlFile("104");//删除的是xml文件的信息
}
/** 删除tableview上的一个列表,并把相应的删除的信息保存到map中*/
void MainWindow::delOneTableViewSaveMap()
{
studentInfo student(_name,_age,_sex);
deleteMap.insert(_id,student); // 插入数据
showMapInfo(deleteMap);
}
int MainWindow::returnOneCurrentSelectRow()
{
QMap<int, int> rowMap;
QItemSelectionModel *model = ui->showTableView->selectionModel();
QModelIndexList sele = model->selectedIndexes();
foreach (QModelIndex index, sele)
{
qDebug() << " i:" <<index.row();
rowMap.insert(index.row(), 0);
}
int rowTonum;
QMapIterator<int, int> rowMapIterator(rowMap);
rowMapIterator.toBack();
while (rowMapIterator.hasPrevious())
{
rowMapIterator.previous();
rowTonum = rowMapIterator.key();
return rowTonum;
}
return -1;
}
/** 显示 Map中�
没有合适的资源?快使用搜索试试~ 我知道了~
Qt 实现对XML的读写操作实现信息管理
共22个文件
png:7个
cpp:3个
h:2个
1星 需积分: 50 53 下载量 115 浏览量
2018-03-14
15:52:20
上传
评论 2
收藏 298KB ZIP 举报
温馨提示
Qt 实现界面操作xml的读取管理信息的功能,里面有一些撤销保存,都是在内存中处理的、可以实现只保存修改的、删除的等
资源推荐
资源详情
资源评论
收起资源包目录
XmlReadAndWriteText.zip (22个子文件)
XmlReadAndWriteText
iocn
iocn.qrc 216B
open.png 1KB
rep.png 17KB
refresh.png 4KB
delete.png 449B
save.png 4KB
addinfodialog.cpp 3KB
XmlReadAndWriteText.pro.user.18 23KB
addinfodialog.h 881B
student.xml 786B
mainwindow.cpp 33KB
addinfodialog.ui 4KB
mainwindow.h 4KB
XmlReadAndWriteText.pro.user 23KB
image
images.qrc 96B
back11.png 219KB
back.png 32KB
XmlReadAndWriteText.pro 671B
main.cpp 408B
XmlReadAndWriteText.pro.user.3.2-pre1 13KB
mainwindow.ui 10KB
student bak.xml 817B
共 22 条
- 1
资源评论
- Tan6543212019-10-23下载下来不能直接编译,有错误
liuzhezhe111
- 粉丝: 41
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功