【QT 基础教程 十五】QTreeView类解析
文章目录
-
- 概要:本期主要介绍Qt中QTableView类的结构和操作实现。
- 一、简介
- 二、操作接口
- 三、源码分享
- 结尾
概要:本期主要介绍Qt中QTableView类的结构和操作实现。
一、简介
头文件:#include<QTreeView>
模块:QT += widgets
父类:QAbstractItemView
功能:Qt中的QTreeView可以将数据项显示在树视图中
二、操作接口
- setEditTriggers:设置单元格是否可编辑、如何操作来编辑。
ui->treeView->setEditTriggers(QTreeView::NoEditTriggers); //单元格不能编辑
- setSelectionBehavior:设置以单个单元格、还是一行、一列方式选择
ui->treeView->setSelectionBehavior(QTreeView::SelectRows); //一次选中整行
- setSelectionMode:设置单选、多选
ui->treeView->setSelectionMode(QTreeView::SingleSelection); //单选,配合上面的整行就是一次选单行
- setAlternatingRowColors:设置每间隔一行,背景色不同
ui->treeView->setAlternatingRowColors(true); //每间隔一行颜色不一样,当有qss时该属性无效
- setFocusPolicy(Qt::NoFocus): 常用来取消单元格的虚线框
ui->treeView->setFocusPolicy(Qt::NoFocus); //去掉鼠标移到单元格上时的虚线框
- setModel 绑定视图和模型
ui->treeView->setModel(mTreeItemModel); //绑定视图模型
对于界面显示数据的增加、删除,不能通过视图来操作(视图只用于显示模型中的数据),所以对于显示数据的操作应该对于该视图绑定的模型进行操作。
三、源码分享
#ifndef TREEVIEW_H
#define TREEVIEW_H#include <QDialog>
#include <QTreeView>
#include <QStandardItemModel>
#include <QStandardItem>QT_BEGIN_NAMESPACE
namespace Ui { class TreeView; }
QT_END_NAMESPACEclass TreeView : public QDialog
{Q_OBJECTpublic:TreeView(QWidget *parent = nullptr);~TreeView();/* 初始化树视图 */void InitTreeView();private:Ui::TreeView *ui;/* 标准模型 */QStandardItemModel *mTreeItemModel;};
#endif // TREEVIEW_H
#include "treeview.h"
#include "ui_treeview.h"TreeView::TreeView(QWidget *parent): QDialog(parent), ui(new Ui::TreeView)
{ui->setupUi(this);mTreeItemModel = new QStandardItemModel(this);InitTreeView(); //初始化
}TreeView::~TreeView()
{delete ui;
}void TreeView::InitTreeView()
{//1. 设置视图属性ui->treeView->setEditTriggers(QTreeView::NoEditTriggers); //单元格不能编辑ui->treeView->setSelectionBehavior(QTreeView::SelectRows); //一次选中整行ui->treeView->setSelectionMode(QTreeView::SingleSelection); //单选,配合上面的整行就是一次选单行ui->treeView->setAlternatingRowColors(true); //每间隔一行颜色不一样,当有qss时该属性无效ui->treeView->setFocusPolicy(Qt::NoFocus); //去掉鼠标移到单元格上时的虚线框//2. 列头相关设置
// ui->treeView->header()->hide(); //隐藏列头ui->treeView->header()->setStretchLastSection(true); //最后一列自适应宽度ui->treeView->header()->setDefaultAlignment(Qt::AlignCenter); //列头文字默认居中对齐//3. 初始化模型mTreeItemModel->setHorizontalHeaderLabels(QStringList()<<QStringLiteral("序号") << QStringLiteral("名称")); //设置列头for(int i = 0;i < 5;i ++){//一级节点,加入mModelQList<QStandardItem*> items1;QStandardItem* item1 = new QStandardItem(QString::number(i));QStandardItem* item2 = new QStandardItem(QStringLiteral("1级节点"));items1.append(item1);items1.append(item2);mTreeItemModel->appendRow(items1);for(int j=0;j<5;j++){//二级节点,加入第1个一级节点QList<QStandardItem*> items2;QStandardItem* item3 = new QStandardItem(QString::number(j));QStandardItem* item4 = new QStandardItem(QStringLiteral("2级节点"));items2.append(item3);items2.append(item4);item1->appendRow(items2);for(int k=0;k<5;k++){//三级节点,加入第1个二级节点QList<QStandardItem*> items3;QStandardItem* item5 = new QStandardItem(QString::number(k));QStandardItem* item6 = new QStandardItem(QStringLiteral("3级节点"));items3.append(item5);items3.append(item6);item3->appendRow(items3);}}}ui->treeView->setModel(mTreeItemModel); //绑定视图模型
}
结尾
本期就简单介绍了树视图的使用,以及一些常用属性的设置。下期再会吧:)