widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QFile>
#include <QVector>
#include <QXmlStreamWriter>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
void readXML();
~Widget();
public slots:
void addStrPtnClicked();
void delStrPtnClicked();
void saveXML();
void writeXML();
private:
Ui::Widget *ui;
QVector<QString> m_data;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QStringList strategyTableHeadList;
strategyTableHeadList.append(tr("策略序号"));
strategyTableHeadList.append(tr("策略内容"));
strategyTableHeadList.append(tr("动作容量(MW)"));
ui->strategyTableWidget->setColumnCount(3);
ui->strategyTableWidget->setHorizontalHeaderLabels(strategyTableHeadList);
QHeaderView *strategyHeader = ui->strategyTableWidget->verticalHeader();
strategyHeader->setHidden(true);// 隐藏行号
ui->strategyTableWidget->setColumnWidth(1,450);
ui->strategyTableWidget->horizontalHeader()->setStretchLastSection(true);
connect(ui->addStrPushButton,SIGNAL(clicked(bool)),this,SLOT(addStrPtnClicked()));
connect(ui->delStrPushButton,SIGNAL(clicked(bool)),this,SLOT(delStrPtnClicked()));
connect(ui->editStrPushButton,SIGNAL(clicked(bool)),this,SLOT(writeXML()));
readXML();
this->setWindowTitle("CSDN IT1995");
}
void Widget::saveXML(){
}
void Widget::readXML(){
QFile file("my.xml");
if (!file.open(QFile::ReadOnly | QFile::Text)){
qDebug()<<"Error: cannot open file";
return;
}
QXmlStreamReader reader;
reader.setDevice(&file);
while (!reader.atEnd()){
QXmlStreamReader::TokenType type = reader.readNext();
if (type == QXmlStreamReader::Characters&& !reader.isWhitespace()){
QString temp(reader.text().toUtf8());
m_data.append(temp);
}
}
int k=0;
if(m_data.size()/3==0)
return;
for(int i=0;i<m_data.size()/3;i++){
ui->strategyTableWidget->insertRow(ui->strategyTableWidget->rowCount());
for(int j=0;j<3;j++){
QTableWidgetItem *newItem=new QTableWidgetItem();
newItem->setText(m_data.at(k++));
//qDebug()<<newItem->text();
ui->strategyTableWidget->setItem(i,j,newItem);
}
}
}
void Widget::addStrPtnClicked(){
ui->strategyTableWidget->insertRow(ui->strategyTableWidget->rowCount());
QTableWidgetItem *newItem_1=new QTableWidgetItem(); //序号
QTableWidgetItem *newItem_2=new QTableWidgetItem(); //内容
QTableWidgetItem *newItem_3=new QTableWidgetItem(); //总容量
newItem_1->setText(QString::number(ui->strategyTableWidget->rowCount()));
ui->strategyTableWidget->setItem(ui->strategyTableWidget->rowCount()-1,0,newItem_1);
}
void Widget::delStrPtnClicked(){
if(ui->strategyTableWidget->currentItem()==NULL)
return;
ui->strategyTableWidget->removeRow(ui->strategyTableWidget->currentRow());
//从新排序
for(int i=0;i<ui->strategyTableWidget->rowCount();i++){
ui->strategyTableWidget->item(i,0)->setText(QString::number(i+1));
}
}
void Widget::writeXML(){
qDebug()<<"11111";
QFile file("my.xml");
if (!file.open(QFile::WriteOnly | QFile::Text)){
qDebug() << "Error: cannot open file";
return;
}
QXmlStreamWriter writer(&file);
writer.setAutoFormatting(true);
writer.writeStartDocument();
writer.writeStartElement("strategy");
for(int i=0;i<ui->strategyTableWidget->rowCount();i++){
writer.writeStartElement("number");
writer.writeTextElement("order",ui->strategyTableWidget->item(i,0)->text());
writer.writeTextElement("content",ui->strategyTableWidget->item(i,1)->text());
writer.writeTextElement("capacity",ui->strategyTableWidget->item(i,2)->text());
writer.writeEndElement();
}
writer.writeEndElement();
writer.writeEndDocument();
file.close();
}
Widget::~Widget()
{
delete ui;
}
main.cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}