QT之QTreeView的實際應用案例
阿新 • • 發佈:2020-12-26
技術標籤: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(); }
奧力給!