Qt入门系列开发教程高级控件篇QTreeView树形视图
Posted 鱼酱2333
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt入门系列开发教程高级控件篇QTreeView树形视图相关的知识,希望对你有一定的参考价值。
效果图
描述
QTreeView实现了模型项的树表示。该类用于提供以前由QListView类提供的标准层次结构列表,但使用了Qt的模型/视图体系结构提供的更灵活的方法。
QTreeView类是模型/视图类之一,是Qt的模型/视图框架的一部分。
QTreeView实现QAbstractItemView类定义的接口,以允许它显示从QAbstractItemModel类派生的模型提供的数据。
构建显示模型数据的树状视图很简单。在以下示例中,目录的内容由QFileSystemModel提供并显示为树:
QFileSystemModel *model = new QFileSystemModel;
model->setRootPath(QDir::currentPath());
QTreeView *tree = new QTreeView(splitter);
tree->setModel(model);
模型/视图体系结构确保树视图的内容随着模型的更改而更新。
具有子项的项目可以处于展开(子项可见)或折叠(子项隐藏)状态。当此状态更改时,将发出一个折叠()或展开()信号,其中包含相关项的模型索引。
用于指示层次级别的缩进量由缩进属性控制。
树视图中的标题是使用QHeaderView类构造的,可以使用header()->hide()隐藏。请注意,每个标题的stretchLastSection属性都设置为true,以确保视图不会浪费为其标题分配的任何空间。如果此值设置为true,则此属性将覆盖标题最后一节上设置的调整大小模式。
默认情况下,树视图中的所有列都可以移动,第一列除外。要禁用这些列的移动,请使用QHeaderView的setSectionsMovable()函数。
属性
-
allColumnsShowFocus : bool
此属性保存项目是否应使用所有列显示键盘焦点
如果此属性为true,则所有列都将显示焦点,否则只有一列显示焦点。
默认值为false。 -
animated : bool
此属性用于保存动画是否已启用
如果此属性为true,则treeview将为分支的展开和折叠设置动画。如果此属性为false,treeview将立即展开或折叠分支,而不显示动画。 -
autoExpandDelay : int
此属性保存在拖放操作期间打开树中项目之前的延迟时间。
此属性保存用户在节点自动打开或关闭之前必须等待的时间(以毫秒为单位)。如果时间设置为小于0,则不会激活。 -
expandsOnDoubleClick : bool
此属性用于保存项目是否可以通过双击展开。
此属性保存用户是否可以通过双击来展开和折叠项目。默认值为true。 -
headerHidden : bool
此属性保存是否显示标题。
如果此属性为true,则不显示标题,否则将显示标题。默认值为false。 -
indentation : int
在树状视图中缩进项目。
此属性保存树视图中每个级别的项目的缩进(以像素为单位)。对于顶级项目,缩进指定从视口边缘到第一列中项目的水平距离;对于子项,它指定它们相对于父项的缩进。
itemsExpandable : bool
此属性用于保存项目是否可由用户展开。
此属性用于确定用户是否可以交互地展开和折叠项。
-
rootIsDecorated : bool
此属性包含是否显示用于展开和折叠顶级项的控件
带有子项的项目通常显示为带有展开和折叠控件,允许显示或隐藏其子项。如果此属性为false,则不会为顶级项显示这些控件。这可以用来使单层树结构看起来像一个简单的项目列表。 -
sortingEnabled : bool
此属性保存是否启用排序
如果此属性为true,则为树启用排序;如果属性为false,则不启用排序。默认值为false。 -
uniformRowHeights : bool
此属性保存treeview中的所有项目是否具有相同的高度
只有在保证视图中的所有项目具有相同高度的情况下,才应将此属性设置为true。这使视图能够进行一些优化。 -
wordWrap : bool
此属性保存项文本字包装策略
如果此属性为true,则在必要时在分词处对项目文本进行包装;否则它根本就没有包装。默认情况下,此属性为false。
公有函数
此属性保存项目是否应使用所有列显示键盘焦点
bool allColumnsShowFocus() const
展开延时时长
int autoExpandDelay() const
返回树状视图中标题覆盖给定x坐标的列。
int columnAt(int x) const
返回列在视口中的水平位置。
int columnViewportPosition(int column) const
列宽
int columnWidth(int column) const
是否双击展开
bool expandsOnDoubleClick() const
头视图
QHeaderView *header() const
在树状视图中缩进项目。
int indentation() const
返回索引上方项的模型索引。
QModelIndex indexAbove(const QModelIndex &index) const
返回索引下方项的模型索引。
QModelIndex indexBelow(const QModelIndex &index) const
是否有动画
bool isAnimated() const
隐藏列
bool isColumnHidden(int column) const
某一项是否展开
bool isExpanded(const QModelIndex &index) const
如果父项给定行的第一列中的项跨越所有列,则返回true;否则返回false。
bool isFirstColumnSpanned(int row, const QModelIndex &parent) const
头是否隐藏
bool isHeaderHidden() const
某一项是否隐藏
bool isRowHidden(int row, const QModelIndex &parent) const
排序开启
bool isSortingEnabled() const
此属性用于保存项目是否可由用户展开。
bool itemsExpandable() const
在树状视图中缩进项目。
void resetIndentation()
此属性包含是否显示用于展开和折叠顶级项的控件
bool rootIsDecorated() const
此属性用于保存项目是否可由用户展开。
void setAllColumnsShowFocus(bool enable)
开启动画
void setAnimated(bool enable)
自动展开
void setAutoExpandDelay(int delay)
隐藏列
void setColumnHidden(int column, bool hide)
设置列宽
void setColumnWidth(int column, int width)
展开某一项
void setExpanded(const QModelIndex &index, bool expanded)
双击展开开启
void setExpandsOnDoubleClick(bool enable)
设置第一列中的项跨越所有列
void setFirstColumnSpanned(int row, const QModelIndex &parent, bool span)
设置头
void setHeader(QHeaderView *header)
隐藏头
void setHeaderHidden(bool hide)
在树状视图中缩进项目。
void setIndentation(int i)
是否可以展开
void setItemsExpandable(bool enable)
此属性包含是否显示用于展开和折叠顶级项的控件
void setRootIsDecorated(bool show)
隐藏行
void setRowHidden(int row, const QModelIndex &parent, bool hide)
开启排序
void setSortingEnabled(bool enable)
设置逻辑索引
void setTreePosition(int index)
是否都有相同高度
void setUniformRowHeights(bool uniform)
是否包裹内容
void setWordWrap(bool on)
这指定树结构应该放在逻辑索引处。如果设置为-1,则树将始终遵循视觉索引0。
int treePosition() const
此属性保存treeview中的所有项目是否具有相同的高度
bool uniformRowHeights() const
是否包裹内容
bool wordWrap() const
实现的公有虚函数
virtual void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QList<int> &roles = QList<int>()) override
virtual QModelIndex indexAt(const QPoint &point) const override
virtual void keyboardSearch(const QString &search) override
virtual void reset() override
virtual void scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = EnsureVisible) override
virtual void selectAll() override
virtual void setModel(QAbstractItemModel *model) override
virtual void setRootIndex(const QModelIndex &index) override
virtual void setSelectionModel(QItemSelectionModel *selectionModel) override
virtual QRect visualRect(const QModelIndex &index) const override
公有槽函数
合并某个项
void collapse(const QModelIndex &index)
合并所有
void collapseAll()
展开某个项
void expand(const QModelIndex &index)
展开所有
void expandAll()
展开带有深度
void expandRecursively(const QModelIndex &index, int depth = -1)
展开几级
void expandToDepth(int depth)
隐藏列
void hideColumn(int column)
resize大小
void resizeColumnToContents(int column)
显示某一列
void showColumn(int column)
某一列排序
void sortByColumn(int column, Qt::SortOrder order)
信号
合并
void collapsed(const QModelIndex &index)
展开
void expanded(const QModelIndex &index)
以上是关于Qt入门系列开发教程高级控件篇QTreeView树形视图的主要内容,如果未能解决你的问题,请参考以下文章
Qt入门系列开发教程高级控件篇QTreeWidget树形小部件
Qt入门系列开发教程高级控件篇QTableWidget表格小部件