gpt4 book ai didi

python - 网格布局: Column width to fit also disabled widgets

转载 作者:太空宇宙 更新时间:2023-11-03 14:44:41 25 4
gpt4 key购买 nike

我已将网格布局添加到 Qt Creator 中的小部件中。层次结构是:

  • QScrollArea
  • 带有网格布局的ScrollAreaContents
  • 三列多行的多个小部件

只要启用了布局中的小部件,列的宽度就由小部件确定。但是,我在启动时禁用所有小部件。然后,列缩小并裁剪小部件。如何强制布局也尊重禁用的小部件? (或者有没有办法在不禁用小部件的情况下阻止使用它们?)

该问题显然是由禁用小部件引起的。关键的几行很简单:

for widget in self.tabScrollAreaContents.children():
widget.setEnabled(False)

这里没有更多代码,只有两张图片:

启用小部件的正确布局:

correct layout with enabled widgets

缩小列并禁用小部件:

shrinked columns with disabled widgets

补充:

下载的最少代码:https://www.dropbox.com/sh/i19geisqw6nxuky/AADIPHL1xVKzLCJdoLEsTFDna?dl=0

看起来像这样(左边是错误的,右边是好的):

screenshot

左右之间的唯一区别是这些行:

for widget in self.TabScrollAreaContentsA.children():
widget.setEnabled(False)

最佳答案

如果您使用以下代码检查 TabScrollAreaContentsA 的子级,您将得到以下结果:

for widget in self.TabScrollAreaContentsA.children():
print(widget)

输出:

<PyQt4.QtGui.QGridLayout object at 0x7f9a19fc3f78>
<PyQt4.QtGui.QPushButton object at 0x7f9a1a0c7048>
<PyQt4.QtGui.QLineEdit object at 0x7f9a1a0c70d8>
<PyQt4.QtGui.QLabel object at 0x7f9a1a0c71f8>
<PyQt4.QtGui.QLineEdit object at 0x7f9a1a0c73a8>
<PyQt4.QtGui.QLabel object at 0x7f9a1a0c7438>
<PyQt4.QtGui.QLineEdit object at 0x7f9a1a0c74c8>
<PyQt4.QtGui.QLabel object at 0x7f9a1a0c7558>
<PyQt4.QtGui.QPushButton object at 0x7f9a1a0c75e8>
<PyQt4.QtGui.QLineEdit object at 0x7f9a1a0c7678>

据观察,它显示为子布局,并且根据 docs :

QLayout.setEnabled (self, bool)

Enables this layout if enable is true, otherwise disables it.

An enabled layout adjusts dynamically to changes; a disabled layout acts as if it did not exist.

By default all layouts are enabled.

See also isEnabled().

也就是说,如果禁用某些布局,就会像不存在一样。

对于这种行为的原因,正确的做法是仅禁用小部件,因为它使用以下代码:

for obj in self.TabScrollAreaContentsA.children():
if isinstance(obj, QtGui.QWidget):
obj.setEnabled(False)

关于python - 网格布局: Column width to fit also disabled widgets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46332491/

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