1. 程式人生 > 其它 >QT之QTreeView的實際應用案例

QT之QTreeView的實際應用案例

技術標籤:Qt

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

奧力給!