日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

Qt工作笔记-把QTableWidget数据存为XML,启动时加载XML

發布時間:2025/3/15 asp.net 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt工作笔记-把QTableWidget数据存为XML,启动时加载XML 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

運行截圖如下:

添加好數據后保存:



此時保存的XML,如下圖:


程序運行時會加載這些xml文件。


代碼如下:

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_OBJECTpublic: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(); }

總結

以上是生活随笔為你收集整理的Qt工作笔记-把QTableWidget数据存为XML,启动时加载XML的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。