QTreeView 簡單用法
QtreeView 是qt 提供樹形顯示組件與QStandardItemModel 聯合使用,實現數據與視圖分離,但是不是嚴格意義上mvc模式.
參考博客
https://blog.csdn.net/dpsying/category_9274382.html
參考官網demo示例
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_MainWindows.h"
#include <QList>
class QTreeView;
class QStandardItemModel;
class QStandardItem;
class MainWindows : public QMainWindow
{
Q_OBJECT
public:
MainWindows(QWidget *parent = Q_NULLPTR);
private:
Ui::MainWindowsClass ui;
public:
QStandardItemModel *standardModel;
};
#include "MainWindows.h"
#include <QTreeView>
#include <QStandardItemModel>
#include <QStandardItem>
#include <QList>
MainWindows::MainWindows(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
//1.創建模型.
standardModel = new QStandardItemModel;
//2.設置表頭名稱.
standardModel->setHorizontalHeaderLabels(QStringList(QStringLiteral("資源")));
//3.獲取模型根item
QStandardItem * item = standardModel->invisibleRootItem();
//4.創建並添加item 第1個子節點.
QStandardItem *itemVehicle = new QStandardItem(QStringLiteral("無人車"));
item->appendRow(itemVehicle);
//5.對第1個子節點,再次進行子節點填充.
QList<QStandardItem *> vehicleItemList;
vehicleItemList.append(new QStandardItem("vehicle_1"));
vehicleItemList.append(new QStandardItem("vehicle_2"));
vehicleItemList.append(new QStandardItem("vehicle_3"));
itemVehicle->appendRows(vehicleItemList);
//6.添加 item 第2個子節點
QStandardItem *itemUav = new QStandardItem(QStringLiteral("無人機"));
item->appendRow(itemUav);
QList<QStandardItem *> uavItemList;
uavItemList.append(new QStandardItem("uav_1"));
uavItemList.append(new QStandardItem("uav_2"));
uavItemList.append(new QStandardItem("uav_3"));
itemUav->appendRows(uavItemList);
//是否隱藏表頭.
// ui.m_treeView->header()->hide();
ui.m_treeView->setModel(standardModel);
ui.m_treeView->expandAll();
}