17. QTreeView 簡單用法

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

}

效果展示

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章