gpt4 book ai didi

qt - 随着更多的小部件被放置在里面,我如何调整 QScrollArea 的内容

转载 作者:行者123 更新时间:2023-12-03 11:33:27 29 4
gpt4 key购买 nike

我有一个 QScrollArea小部件,开始为空;

empty QScrollArea

它有一个垂直布局,带有一个 QGridLayout 和一个垂直间隔以将其保持在顶部,并防止它延伸到整个滚动区域;

QScrollArea in Qt Designer

在程序的其他地方,有一个 QTextEdit,它在更改时会扫描其内容以查找“物种”元素,然后将它们添加到 QGridLayout。任何已被移除的物种元素也会被移除。这一点有效;

QScrollArea with strange scroll bar

我一直打开垂直滚动条,这样当它出现时它就不会位于其他东西的顶部。请注意,尽管不需要,滚动条已经比滚动框大。

这就是问题。滚动区域似乎是预设的,我无法更改它。如果我向 QGridLayout 添加更多行,则滚动区域的大小不会增加。

相反,它保持相同的大小,并挤压 QGridLayout,使其看起来很丑(起初);

Squashed QGridLayout

然后在添加更多之后它变得无法使用;

unusable line edits

请注意,滚动条的大小仍与之前的图像相同。前两张图片来自 Qt Designer,后三张来自正在运行的程序。

如果我调整窗口大小以使 QScrollArea 增长,那么我会看到:

dumb too small layout

表示滚动区域内的某些布局未正确调整大小。

我的问题是; 当我从 QGridLayout 添加和删除时,我需要做什么才能使小部件的可滚动区域动态调整大小?

最佳答案

如果您是从 Google 来的,但没有得到接受的答案,那是因为您错过了另一个 secret 调用:QScrollArea::setWidget .您必须创建并明确标识要滚动的单个小部件。仅将项目添加为子项是不够的!将多个项目直接添加到 ScrollArea也不会工作。

这个脚本演示了一个简单的 QScrollArea 工作示例:

from PySide.QtGui import *

app = QApplication([])

scroll = QScrollArea()
scroll.setWidgetResizable(True) # CRITICAL

inner = QFrame(scroll)
inner.setLayout(QVBoxLayout())

scroll.setWidget(inner) # CRITICAL

for i in range(40):
b = QPushButton(inner)
b.setText(str(i))
inner.layout().addWidget(b)

scroll.show()
app.exec_()

关于qt - 随着更多的小部件被放置在里面,我如何调整 QScrollArea 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12781407/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com