QT之QTreeView的实际应用案例

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

奥力给!

猜你喜欢

转载自blog.csdn.net/m0_49047167/article/details/111635484