mainwindow.cpp 文章来源:https://www.toymoban.com/news/detail-628523.html
#include "mainwindow.h"
#include "QTreeWidgetItem"
#include "ui_mainwindow.h"
#include <QDomDocument>
#include <QFile>
#include <QtDebug>
MainWindow::MainWindow(QWidget* parent)
: QMainWindow(parent)
// ,
// ui(new Ui::MainWindow)
{
// ui->setupUi(this);
setupUi(this);
initTable();
initTree();
setStyle();
xmlAnalysis();
}
MainWindow::~MainWindow()
{
// delete ui;
}
void MainWindow::ShowPointDetail(int r, int c)
{
qDebug() << r << c;
}
void MainWindow::initTable()
{
connect(tableWidget, &QTableWidget::cellDoubleClicked, this, &MainWindow::ShowPointDetail);
tableWidget->setRowCount(5);
tableWidget->setColumnCount(5);
QTableWidgetItem* item;
qDebug() << tableWidget->rowCount();
qDebug() << tableWidget->columnCount();
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
item = new QTableWidgetItem(QString::number(j + 1));
tableWidget->setItem(j, 0, item);
qDebug() << "ces";
item = new QTableWidgetItem("12000");
tableWidget->setItem(j, 1, item);
}
}
// tableWidget->verticalHeader()->setResizeMode(QHeaderView::Stretch);
tableWidget->horizontalHeader()->setStretchLastSection(true);
tableWidget->horizontalHeader()->setMinimumHeight(40);
tableWidget->horizontalHeader()->setFont(QFont("song", 12));
treeWidget->setColumnCount(12);
qDebug() << treeWidget->columnCount();
}
void MainWindow::initTree()
{
// QTreeWidgetItem* tree = new QTreeWidgetItem(treeWidget,"test");
QTreeWidgetItem* typeItem = new QTreeWidgetItem(treeWidget, QStringList(QString("test ")));
typeItem->setText(1, "01");
QTreeWidgetItem* typeItem1 = new QTreeWidgetItem(treeWidget, QStringList(QString("test1 ")));
typeItem1->setText(2, "011");
QTreeWidgetItem* typeItem2 = new QTreeWidgetItem(typeItem1, QStringList(QString("test12 ")));
typeItem2->setText(1, "0112");
treeWidget->addTopLevelItem(typeItem);
}
void MainWindow::xmlAnalysis()
{
QFile f("D:\\naru\\baogao\\STAT_01_20230608_170625_552.xml");
if (!f.open(QIODevice::ReadOnly | QIODevice::Text)) {
qDebug() << tr("open error");
return;
}
// QByteArray arr = f.readAll();
// qDebug() << arr;
qDebug() << "anasysis STA01";
qDebug() << f.fileName() << f.fileName().toLocal8Bit().data();
qDebug() << f.fileName().toUtf8().data();
QString errStr;
int errLine;
int errColoum;
QDomDocument doc;
if (!doc.setContent(&f, false, &errStr, &errLine, &errColoum)) {
qPrintable("Error:Parser er");
qPrintable(errStr);
}
QDomElement root = doc.documentElement();
qDebug() << root.tagName().toUtf8().data();
qDebug() << root.attribute("type") << root.attribute("desc");
QDomNodeList query_node = root.elementsByTagName("QueryTime");
qDebug() << query_node.count() << query_node.isEmpty() << query_node.size() << query_node.length();
if (query_node.count() == 1) {
//查询节点1
QDomNode m = query_node.item(0);
qDebug() << m.toElement().attribute("start");
//警告节点
QDomNodeList warn_node = m.toElement().elementsByTagName("Warning");
qDebug() << "warning size = " << warn_node.count();
for (int i = 0; i < warn_node.count(); i++) {
qDebug() << warn_node.at(i).toElement().attribute("type"); //获取属性
qDebug() << warn_node.at(i).toElement().attribute("time");
// led节点
QDomNodeList led_node = warn_node.item(i).toElement().elementsByTagName("IED"); //在当前节点获取下面的节点
qDebug() << "led_node.count()" << led_node.count();
for (int i = 0; i < led_node.count(); i++) {
IED01 ied;
led_node.item(i).toElement().attribute("name");
ied.desc = led_node.item(i).toElement().attribute("desc");
// point
QDomNodeList point_node = led_node.item(i).toElement().elementsByTagName("Point"); //解析Point节点
for (int i = 0; i < point_node.count(); i++) {
Point01 point;
point.path = point_node.item(i).toElement().attribute("path");
point.desc = point_node.item(i).toElement().attribute("desc");
point.other = point_node.item(i).toElement().attribute("other");
point.value = point_node.item(i).toElement().attribute("Value");
point.time = point_node.item(i).toElement().attribute("Time");
point.quality = point_node.item(i).toElement().attribute("Quality");
qDebug() << point.path;
}
}
// Locations节点
QDomNodeList loca_node = warn_node.item(i).toElement().elementsByTagName("Locations"); //解析Location节点
qDebug() << "loca_node.count()" << loca_node.count();
// location下的子节点
QDomNodeList Ied_node = loca_node.at(0).toElement().elementsByTagName("Ied");
qDebug() << "Ied_node.iedDesc()" << Ied_node.item(0).toElement().attribute("iedDesc");
qDebug() << "Ied_node.count()" << Ied_node.count();
// effect节点
QDomNodeList effe_node = warn_node.item(i).toElement().elementsByTagName("Effects"); //解析Effects节点
qDebug() << "effe_node.count()" << effe_node.count();
qDebug() << effe_node.item(0).toElement().attribute("desc");
//<Suggestions>
QDomNodeList sugg_node = warn_node.item(i).toElement().elementsByTagName("Suggestions"); //解析Effects节点
qDebug() << "sugg_node.count()" << sugg_node.count();
qDebug() << sugg_node.item(0).toElement().attribute("desc");
}
} else {
qDebug() << "QueryTime error";
}
}
void MainWindow::setStyle()
{
// menufsda->setStyleSheet("background-color:red;");
// QMenuBar* bar = menuBar();
// bar->setStyleSheet("background-color:red;");
setStyleSheet("QMenuBar{background-color: "
"qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, "
"stop:0 rgba(11, 126, 123, 255), "
"stop:1 rgba(25, 152, 149, 255));}"); // width:1920px;height:36px;
}
mainwindow.h文章来源地址https://www.toymoban.com/news/detail-628523.html
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
//#include "D:\\naru\\baogao\\relay_diagnose_lib\\relay_diagnose_struct.h"
#include "ui_mainwindow.h"
#include <QMainWindow>
// namespace Ui {
// class MainWindow;
// }
//二次回路故障诊断 STAT_01 start
struct Point01 {
QString path;
QString desc;
QString other;
QString value;
QString time;
QString quality;
};
struct Cable {
QString id;
QString startIedName;
QString startIedDesc;
QString endIedName;
QString endIedDesc;
QString cableLen;
QString resultId;
QString priority;
};
struct Port {
QString id;
QString iedName;
QString iedDesc;
QString plug;
QString resultId;
QString priority;
};
struct Slot {
QString id;
QString iedName;
QString iedDesc;
QString resultId;
QString priority;
};
struct Ied01 {
QString iedName;
QString iedDesc;
QString resultId;
QString priority;
};
struct Locations {
QVector<Ied01> vec_Ied;
QVector<Slot> vec_Slot;
QVector<Port> vec_Port;
QVector<Cable> vec_Cable;
};
struct IED01 {
QString name;
QString desc;
QVector<Point01> vec_point;
};
struct Effects {
QString desc;
QString resultId;
QString priority;
};
struct Suggestions {
QString desc;
QString resultId;
QString priority;
};
struct Warning01 {
QString type;
QString time;
QVector<IED01> vec_ied;
Locations locations;
QVector<Effects> vec_effect;
QVector<Suggestions> vec_sugg;
};
struct QueryTime01 {
QString start;
QString end;
QVector<Warning01> vec_warning;
};
struct STAT01 {
QString type;
QString desc;
QueryTime01 query_time;
};
//二次回路故障诊断 STAT_01 end
class MainWindow : public QMainWindow, public Ui::MainWindow {
Q_OBJECT
public:
explicit MainWindow(QWidget* parent = NULL);
~MainWindow();
public slots:
void ShowPointDetail(int r, int c);
private:
// Ui::MainWindow *ui;
void initTable();
void initTree();
void setStyle();
void xmlAnalysis();
};
#endif // MAINWINDOW_H
到了这里,关于QT解析xml文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!