就像所描述的标题,当我重绘QTreeView中有一个标题(QHeaderView)的滚动条,但滚动条的高度是QTreeView的整个高度,我想让滚动条的高度等于QTreeView则的高度减去头的height.just像下面的图片: 如何指定QTreeView中滚动条的高度
0
A
回答
0
用于您的问题的解决方案可能会垂直滚动条的位置设置从QHeaderView
取得的constant_offset
值(y轴上)。
这可以通过继承来完成的QTreeView
像这样:
class MyTreeView : public QTreeView
{
public:
MyTreeView(QWidget* parent = nullptr): QTreeView(parent){}
void updateVertScrollBar()
{
auto* ptr = verticalScrollBar();
QRect rect = ptr->geometry();
rect.setTop(header()->height());
ptr->setGeometry(rect);
}
void resizeEvent(QResizeEvent* ev) override
{
QTreeView::resizeEvent(ev);
updateVertScrollBar();
}
};
根据sizePolicy
的updateVertScrollBar
方法可以被称为数据填充或作为样本实施提出可能会出现的每个更新刚过resizeEvent
- 应该涵盖对小部件执行的各种大小调整。
编辑
另外去除收缩的滚动条留下的空白将是棘手的。首先表示QTreeView
由视口小部件和滚动条(等等)构建而成。您现在看到的问题来自视口加垂直滚动条宽度(如果可见)应该匹配并且这是内部计算的事实。
我说过这很棘手,因为当您尝试强制这些组件的大小时会发生负载。一些更新被调用,一些通过事件循环被调用。您可以查看this以获取有关此概念的更详细信息。类似的方法可能适用于QTreeView
。
基本上你需要做的是拉伸视口宽度。这应该可能在resizeEvent
期间完成,但从那里调用,如viewport()->setGeometry()
可能不会很好 - 你可能会陷入循环。您可以尝试blockSignals
,但我不确定这会有所帮助。一般来说,如果你想搞乱一个给定的Qt
小部件的内部,你至少应该简单地通过它的实现。
相关问题
- 1. 机身高度滚动条
- 2. div高度100%,滚动条
- 3. 如何指定表格的高度,使垂直滚动条出现?
- 4. jscrollpane(jquery)中的滚动条高度
- 5. 滚动条滚动过去内容(没有指定高度,只填充底部)
- 6. 如何只滚动没有指定高度的第二个div
- 7. 微小的滚动条自动高度
- 8. 我如何使用滚动条来固定高度,容器
- 9. 如何使div显示滚动条(没有固定高度)?
- 10. QTreeView水平滚动条问题
- 11. 如何获得ListView中水平滚动条的高度
- 12. 如何为ImageView指定动态高度?
- 13. 增加滚动条高度自动
- 14. 固定宽度框与全窗口的滚动条高度
- 15. iframe的高度和滚动条不IE11
- 16. 相对高度的完美滚动条
- 17. 如何让高滚动条上的滚动条工作
- 18. 如果内容高度不足以滚动,如何隐藏CSS的滚动条?
- 19. 如何在javascript中获取浏览器滚动条高度
- 20. 设置不同元素高度的滚动条高度
- 21. 我想比较滚动条的高度和文档高度
- 22. 没有滚动条的高度限制的可滚动列
- 23. 如何给滚动条,高度自动完成显示列表?
- 24. ExtJs网格高度和滚动条eurgh
- 25. ReportViewer高度问题。隐藏滚动条
- 26. JS滚动条与流体高度
- 27. DIV高度垂直滚动条
- 28. 高度100和iframe =两个滚动条
- 29. javascript计算滚动条高度
- 30. DIV - 100%高度导致滚动条
这是可以做到的,但在标题中有一个空白的空白,宽度等于滚动条的宽度,我怎样才能删除标题中的空白空白? – Lomuto
粘贴显示您正在经历的图像。只有滚动条周围的感兴趣区域就足够了。 – Dusteh
[就像这样](https://1drv.ms/i/s!AuRlDm0ORHE_hN4McM_n9FAw1_8S8w) – Lomuto