Qt QVBoxLayout的addStretch strech占用了太多空间(从布局)
Qt QVBoxLayout's addStretch strech is taking too much space (from the layout)
我有一个QVBoxLayout,它有一个QSCrollArea和addStretch()添加到它的末尾。
QScrollArea在这里只使用了一半的可用空间,即使下面有空闲空间,,目前被addStretch占用。
如果QScrollArea的内容足够大,我希望QScrollArea扩展到所有可用空间。当QScrollArea的内容较小时,我希望QScrollArea缩小到该大小,剩余的可用空间由addStetch使用。
然而,目前,对于较小的QScrollArea,这是有效的,但是当QScrollArea的内容较大时,它只扩展到可用空间的一半。
我尝试为QScrollArea和底层滚动小部件设置各种大小策略,但没有任何效果。
排序的技巧是什么?
这是我的代码片段[用Python,但非常欢迎用c++回答]:
# My setup
self.layout = QVBoxLayout()
self.setLayout(self.layout)
scrollArea = QScrollArea()
self.layout.addWidget(scrollArea)
scrollArea.setWidgetResizable(True)
scrollArea.setEnabled(True)
self.scrollWidget = QWidget()
self.scrollLayout = QVBoxLayout()
self.scrollWidget.setLayout(self.scrollLayout)
scrollArea.setWidget(self.scrollWidget)
# Now what I do is, I add bunch of widgets inside the self.scrollLayout
# and in the end, I perform a self.layout.addStretch() to push them up (verticle Alignment does same)
# Maximum height QScrollArea (scrollArea) gets is stuck at around 50% although I want to take all the space if necessary
我添加了所有可能的setSizePolicy(..)选项
scrollArea.setSizePolicy(QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding))
# and ALL others. None works. addStretch() still takes 50% minimum space and gets even more if QScrollArea's contents are smaller.
我刚刚遇到了同样的问题,我想我找到了一个解决方案。不要在QScrollArea之后添加拉伸,而是作为QScrollArea布局内的最后一个元素。因此,在您的代码中,使用self.scrollLayout.addStretch()
而不是self.layout.addStretch()
。
我找到了解决方案。有必要重写sizeHint来保持scrollarea的滚动小部件。设置滚动小部件的最大高度是必要的。有必要将这个小部件放置在QVBoxLayout中,并使用addStretch()将其推到顶部。
当QScrollArea的内容较小时,我希望QScrollArea缩小到该大小,剩余可用空间由addStetch使用。
如果QScrollArea的内容很小,您可以将它们对齐到顶部并隐藏垂直滚动条。在这种情况下,你不需要在主垂直布局中添加拉伸。
如果内容大于QScrollArea,它将占用所有可用空间。
我想,这就是你需要的。
- 在没有太多条件句的情况下,我如何避免被零除
- 错误:字符数组的初始值设定项太多
- 对象实例化调用构造函数的次数太多
- Levenshtein 两个文件的距离花费了太多时间
- 我有三个 getline,但是一旦编译,输入就太多了
- 将使用太多的纹理插值器 - 带旋转的着色器
- Qt C++:不同文件中同一命名空间的多个Q_NAMESPACE
- C/C++:socket() 创建在循环中失败,打开的文件太多
- 使用Visual Studio在虚幻引擎中创建一个新的类c ++给了我太多的错误
- C++:数组<>初始值设定项太多
- GLib-ERROR:为GWakeup创建管道:打开的文件太多
- C++,从文件读取到结构,然后读取到向量(结构被推入向量太多次,而不仅仅是一次)
- 更智能地在C++中包含保护,以便在不同的命名空间中多次包含标头
- 我会导致太多内存泄漏,以至于我的计算机无响应吗?
- ZeroMq:打开的文件太多.在同一对象上连续增长的fd使用数
- 读取串行命令花费太多时间
- 为什么 Boost unordered_map 在第一次插入时需要太多时间?
- BRK(0) 花费的时间是否太多?
- Valgrind 声称内存释放中的自由空间太多
- Qt QVBoxLayout的addStretch strech占用了太多空间(从布局)