小工具知识网

当前位置: 首页 > 行业知识 > Qt学习-22 <QTreeWidget & QTreeView>

行业知识

Qt学习-22 <QTreeWidget & QTreeView>

2026-11-14 13:12:00 来源:互联网转载

—��为学习笔记,如有错误请指出


一、QTreeWidget

1. 样式展示:

① 

② 

2. 样式代码:

① 

//treeWidget树控件的使用    //设置水平头    //QStringList() 创建匿名对象,省略起名的操作    ui->treeWidget->setHeaderLabels(QStringList()treeWidget->setCurrentItem(treeWidgetItem_1);
④ 当前选中行的上一个选中行
//当前选中行 上一个选中行ui->treeWidget->currentItemChanged(treeWidgetItem_1, treeWidgetItem_2);
9). 树排序
① 设置自动排序
//获取ui->treeWidget->isSortingEnabled();//设置ui->treeWidget->setSortingEnabled(true);
② 升序降序
//升序ui->treeWidget->sortByColumn(1, Qt::SortOrder::AscendingOrder);//降序ui->treeWidget->sortByColumn(1, Qt::SortOrder::DescendingOrder);
10). 树查找
QString text = "顶级条目2-第2列";Qt::MatchFlags flags;ui->treeWidget->findItems(text, flags, 0);bool isEmpty = ui->treeWidget->findItems(text,Qt::MatchExactly).isEmpty();
11). 清空树
//清空控件void MainWindow::on_pushButton_2_clicked(){    ui->treeWidget->clear();}
12). 折叠树
//折叠控件void MainWindow::on_pushButton_3_clicked(){    ui->treeWidget->collapseItem(treeWidgetItem_1);}
13). 展开树
//展开控件void MainWindow::on_pushButton_4_clicked(){    ui->treeWidget->expandItem(treeWidgetItem_1);}
14). 滚动指定条目
//滚动到指定条目void MainWindow::on_pushButton_5_clicked(){    void scrollToItem(const QTreeWidgetItem * item, QAbstractItemView::ScrollHint hint = EnsureVisible)}
15). 树单击信号
void MainWindow::on_treeWidget_itemClicked(QTreeWidgetItem *item, int column);
16). 树双击信号
void MainWindow::on_treeWidget_itemDoubleClicked(QTreeWidgetItem *item, int column);
17). 树展开信号
void MainWindow::on_treeWidget_itemExpanded(QTreeWidgetItem *item);
18). 树折叠信号
void MainWindow::on_treeWidget_itemCollapsed(QTreeWidgetItem *item);
19). 列数据变化信号
void MainWindow::on_treeWidget_itemChanged(QTreeWidgetItem *item, int column);

二、QTreeView

参考文章

1. 介绍

QTreeView类继承于QAbstractItemView类,提供了一个树结构视图的模型

QTreeView实现了模型中项目的树表示,模型/视图架构确保树视图的内容随着模型的变化而更新,具有子项的项目可以处于展开或折叠状态

例:构建一个树视图显示模型中的数据

QStandardItemModel *model = new QStandardItemModel;ui->treeView->setModel(model);//一级节点QStandardItem * item = new QStandardItem;item->setText("一级节点");model->appendRow(item);// ui->treeView->setHeaderHidden(true); //设置标题显示与否ui->treeView->expandAll();  //设置子节点全部展开//二级节点  (item:此二级节点的父节点)QStandardItem * item_2= new QStandardItem;item_2->setText("二级节点");item_2->setCheckable(true); //设置复选框item_2->setCheckState(Qt::Checked);item->appendRow(item_2);

 

2. 样式展示:
3. 样式代码:
QStandardItemModel *model = new QStandardItemModel;ui->treeView->setModel(model);QStandardItem *item = new QStandardItem;item->setText("000");model->appendRow(item);insterTreeNode("aaa",item);insterTreeNode("bbb",item);insterTreeNode("ccc",item);insterTreeNode("ddd",item);ui->treeView->expandAll(); void MainWindow::insterTreeNode(QString str,QStandardItem *parent){    QStandardItem *item = new QStandardItem;    item->setText(str);    parent->appendRow(item);}
4. 属性
1). allColumnsShowFocus

表示项是否应该使用所有列显示键盘焦点,默认值为false

//获取ui->treeView->allColumnsShowFocus();  //设置//true所有列将显示焦点,否则只有一列显示ui->treeView->setAllColumnsShowFocus(bool enable);
2). animated

表示树视图折叠或者展开分支时是否启用动画,默认为False

//获取ui->treeView->isAnimated(); //设置ui->treeView->setAnimated(bool enable);//false 不显示动画,true 显示动画
3). expandsOnDoubleClick

表示是否双击展开节点,默认为True

//获取ui->treeView->expandsOnDoubleClick();//设置ui->treeView->setExpandsOnDoubleClick(bool enable);
4). headerHidden

表示是否隐藏头标题,默认false

//获取ui->treeView->isHeaderHidden();//设置ui->treeView->setHeaderHidden(bool hide);
5). autoExpandDelay

表示在拖放操作期间打开或关闭树中的项之前的延迟时间(以毫秒为单位)。

如果时间被设置小于0,那么将不会被激活。

默认情况下值为-1,即禁用自动扩展。

//获取ui->treeView->autoExpandDelay();//设置ui->treeView->setAutoExpandDelay(int delay);
6). indentation

表示树视图中每个级别的项目以像素为单位测量的缩进。对于顶级项目,缩进指定从视口边缘到第一列项目的水平距离,对于子项,它指定它们与父项之间的缩进。

默认情况下,值与样式相关。因此,当样式更改时,此属性将从它更新,调用setIndentation( )停止更新,调用resetIndentation()将恢复默认行为。

ui->treeView->indentation();//停止更新ui->treeView->setIndentation(int i);//恢复默认ui->treeView->resetIndentation();
7). itemsExpandable

表示用户是否可以交互展开和折叠项,默认true

//获取ui->treeView->itemsExpandable();//设置ui->treeView->setItemsExpandable(bool enable);
8). rootlsDecorated

表示是否显示 (展开和折叠顶级项的)控件,默认为true

带有子项目的项目通常显示为展开和折叠他们的控件,从而允许显示或隐藏它们的子项目:若此属性为false,则不会为顶级项显示这些控件。这可以使单个级别的树结构看起来像一个简单的项目列表。

//获取ui->treeView->rootIsDecorated();//设置ui->treeView->setRootIsDecorated(bool show);
9). sortingEnabled

表示是否启用排序,默认为false

//获取ui->treeView->isSortingEnabled();//设置ui->treeView->setSortingEnabled(bool enable);
10). uniformRowHeights

表示是否让视图中的所有项目具有相同的高度,默认false

只有在保证视图中的所有项具有相同高度时,才应该将此属性设置为true

///获取ui->treeView->uniformRowHeights();//设置ui->treeView->setUniformRowHeights(bool uniform);
11). wordWrap

表示是否启用换行,默认false;

启用该属性,则文本将在需要的位置进行换行;

若不换行则需要设置 textElideMode(把超出范围的值显示为省略号)

//获取ui->treeView->wordWrap();//设置ui->treeView->setWordWrap(bool on);
5. 公共函数
1). columnAt

返回给定x坐标所在的行序号

ui->treeView->columnAt(int x);
2). columnViewportPosition

返回给定行号所在的视窗中的水平位置

ui->treeView->columnViewportPosition(int column);
3-1). columnWidth

返回给定行号的宽度

ui->treeView->columnWidth(int column);
3-2). setColumnWidth

设置给定行号的宽度

ui->treeView->setColumnWidth(int column,int width);
4). header

返回头标题信息,封装在QHeaderView中

QHeaderView *header() const
5). indexAbove

返回在给定模型上面的模型

QModelIndex indexAbove(const QModelIndex &index) const
6). indexBelow

返回在给定模型下面的模型

QModelIndex indexBelow(const QModelIndex &index) const
7). isColumnHidden

返回给定的列是否隐藏

QModelIndex indexBelow(const QModelIndex &index) const
8). isRowHidden

返回给定的行是否隐藏

bool isRowHidden(int row, const QModelIndex &parent) const
9-1). isFirstColumnSpanned

如果父元素给定行的第一列中的项跨越所有列,则返回true,否则返回false

bool isFirstColumnSpanned(int row, const QModelIndex &parent) const
9-2). setFirstColumnSpanned

如果span为true,则具有给定父元素的行中第一列中的项被设置为跨所有列,否则显示该行上的所有项。

void setFirstColumnSpanned(int row, const QModelIndex &parent, bool span)
10-1) . setTreePosition 

指定树结构应该放在逻辑索引处。如果设置为-1,则树将始终跟随视觉索引为0

ui->treeView->setTreePosition(int index);
10-2). treePosition

返回设置树的逻辑索引。如果返回值为-1,则树被放置在可视索引0上

ui->treeView->treePosition();
6. 公共槽函数
1). collapse

折叠给定的节点

void collapse(const QModelIndex &index)
2). collapseAll

折叠全部的节点

ui->treeView->collapseAll();
3). expand

展示给定的节点

void expand(const QModelIndex &index)
4). expandAll

展示全部节点

ui->treeView->expandAll();
5). expandRecursively

将给定索引处的项目及其所有子项扩展到给定深度。(深度是相对于给定索引的)深度为-1将扩展所有子项,深度为0将仅扩展给定索引。

如果模型包含大量项目,此功能将需要一些时间来执行

void expandRecursively(const QModelIndex &index, int depth = -1)
6). expandToDepth

将所有可扩展项目扩展到给定深度;

展开节点带深度,如果是-1展开全部节点,如果是0则展开给定的索引

void expandToDepth(int depth)
7). hideColumn

隐藏给定的列

ui->treeView->hideColumn(int column);
8). resizeColumnToContents

恢复列的宽度设置

ui->treeView->resizeColumnToContents(int column);
9). showColumn

展示给定的列

ui->treeView->showColumn(int column);
10). sortByColumn

升序或降序进行排列

ui->treeView->showByColumn(int column,Qt::SortOrder order);//例 Qt::SortOrder order = Qt::AscendingOrder
7. 信号
1). collapsed

有节点折叠的时候信号产生

void collapsed(const QModelIndex &index)
2). expand

有节点展开时信号产生

void expanded(const QModelIndex &index)

上一篇:阿里云服务器怎么安装lamp?

下一篇:哔哩哔哩视频下载方法指南