QTreeView如何根据情况去隐藏和显示自己定义滚动条?用C++表示
时间: 2023-07-15 18:15:24 浏览: 102
在 Qt 中,可以通过 QTreeView 的 setVerticalScrollBarPolicy() 和 setHorizontalScrollBarPolicy() 函数来控制显示或隐藏滚动条。默认情况下,QTreeView 会自动显示滚动条。
以下是一个示例代码,可以根据需要显示或隐藏垂直滚动条:
```cpp
// 隐藏垂直滚动条
treeView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
// 显示垂直滚动条
treeView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
```
类似的,可以使用 setHorizontalScrollBarPolicy() 函数来控制水平滚动条的显示或隐藏。
相关问题
QTreeView如何根据情况去隐藏和显示滚动条?用C++表示
QTreeView可以使用setVerticalScrollBarPolicy和setHorizontalScrollBarPolicy方法来设置垂直和水平滚动条的显示策略。
以下是一个示例代码,当树的高度小于等于父窗口高度时,隐藏垂直滚动条;当树的宽度小于等于父窗口宽度时,隐藏水平滚动条:
```c++
#include <QTreeView>
#include <QScrollBar>
void setScrollBarPolicy(QTreeView *treeView)
{
int treeWidth = treeView->header()->length();
int treeHeight = treeView->sizeHintForRow(0) * treeView->model()->rowCount();
if (treeWidth <= treeView->width()) {
treeView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
} else {
treeView->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
}
if (treeHeight <= treeView->height()) {
treeView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
} else {
treeView->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
}
}
```
调用setScrollBarPolicy函数,传入QTreeView对象即可设置其滚动条显示策略。
QTreeView如何获取所有Item当前显示高度 C++表示
可以使用QTreeView的indexAt()方法获取每个item的QModelIndex,然后再使用QTreeView的visualRect()方法获取这个index在视图中的矩形区域,进而得到高度。示例代码如下:
```cpp
QTreeView* treeView = new QTreeView(parent);
// ... 初始化treeView
QAbstractItemModel* model = treeView->model();
int rowCount = model->rowCount();
for (int row = 0; row < rowCount; ++row) {
QModelIndex index = model->index(row, 0); // 获取第一列的index
QRect itemRect = treeView->visualRect(index); // 获取item在视图中的矩形区域
int itemHeight = itemRect.height(); // 获取item的高度
// 处理itemHeight ...
}
```
这样,就可以获取到所有item当前显示的高度了。