QT之QTreeView的案例应用效果如下:
头文件如下:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QGridLayout>
#include <QPushButton>
#include <QWidget>
#include <QMainWindow>
#include <QTreeView>
#include <QStandardItemModel>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
QWidget *widget;
QStandardItemModel *model;
QTreeView *treeView;
};
#endif // MAINWINDOW_H
主程序如下:
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
this->setGeometry(100,100,400,600);
//实例化
treeView = new QTreeView(this);
//位置
treeView->setGeometry(50,50,300,400);
//2列
model = new QStandardItemModel(3,2);
//列名称
model->setHeaderData(0,Qt::Horizontal,"项目设备");
model->setHeaderData(1,Qt::Horizontal,"项目运营状态");
QStandardItem *itemL1 = new QStandardItem("正常");
itemL1->setIcon(QIcon(":/new/prefix1/folder"));
//项目层级的状态提示
QStandardItem *itemL2 = new QStandardItem("项目下有设备故障");
itemL2->setIcon(QIcon(":/new/prefix1/folder"));
//项目层级的状态提示
QStandardItem *itemL3 = new QStandardItem("项目下有设备故障");
itemL3->setIcon(QIcon(":/new/prefix1/folder"));
//定义节点
QStandardItem *item1 = new QStandardItem("项目A");
item1->setIcon(QIcon(":/new/prefix1/folder"));
//子节点1
QStandardItem *item11 = new QStandardItem("设备A1");
item11->setIcon(QIcon(":/new/prefix1/file"));
item1->appendRow(item11);
//子节点1的子节点
item11->setText("设备A1 正常");
//item11->appendRow(itemL1);
//子节点2
QStandardItem *item12 = new QStandardItem("设备A2");
item12->setIcon(QIcon(":/new/prefix1/file"));
item1->appendRow(item12);
//子节点2根据条件改变标题,加条件判断
item12->setText("设备A2 有6条故障");
//定义节点2
QStandardItem *item2 = new QStandardItem("项目B");
item2->setIcon(QIcon(":/new/prefix1/folder"));
//子节点1
QStandardItem *item21 = new QStandardItem("设备B1");
item21->setIcon(QIcon(":/new/prefix1/file"));
//子节点1根据条件改变标题,加条件判断
item21->setText("设备B1 有2条故障");
item2->appendRow(item21);
//子节点2
QStandardItem *item22 = new QStandardItem("设备B2");
item22->setIcon(QIcon(":/new/prefix1/file"));
item2->appendRow(item22);
//子节点2的标签根据条件显示,增加变量和条件判断
item22->setText("设备B2 未启用");
//将节点添加至 QStandardItemModel
model->setItem(0,0,item1);
//项目层级的状态列添加
model->setItem(0,1,itemL2);
model->setItem(1,0,item2);
//项目层级的状态列添加
model->setItem(1,1,itemL3);
//将 QStandardItemModel 数据绑定 QTreeView 控件
treeView->setModel(model);
}
MainWindow::~MainWindow()
{
this->destroy();
}
奥力给!