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

奥力给!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值