行业知识
Qt学习-22 <QTreeWidget & QTreeView>
—��为学习笔记,如有错误请指出
一、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?
下一篇:哔哩哔哩视频下载方法指南