gpt4 book ai didi

Qt : Qwidget size

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

我正在用 Qt 编写一个程序,如下所示:

screen capture

主窗口是我定义的一个类Window : QWidget。它有一个QGridLayout,基本上有 1 行和 3 列。正如你所看到的,第一列包含一个菜单(它是一个类 Menu :QWidget),第二列和第三列各包含一个 Canvas (一个类 Canvas : QWidget我也已经定义了)。

我很难弄清楚尺寸是如何工作的。到目前为止,我刚刚定义了第一列宽度的最小尺寸(在我的窗口布局中)来固定菜单的宽度,并且我在其构造函数中为 Canvas 设置了固定尺寸(如下所示: setFixedSize(QSize(size_in_pixels, size_in_pixels));)。

问题当然是,在用户重新缩放窗口时,这会表现得很糟糕。我想我想做的是将 Canvas 的 sizeHint 设置为 size_in_pixels (我的首选大小),但这似乎不太可能。我还希望我的 Canvas 始终具有相同的高度和宽度。我一直在阅读 Qt 文档并尝试了一些方法,但我无法找到解决方案。

您认为应该走什么路?非常感谢您的见解。

最佳答案

您只需将 Canvas 小部件设置为扩展大小策略即可。随着布局尺寸的增加,它们将同等地消耗剩余空间。

这是一个用 PyQt4 编写的示例

widget = QtGui.QWidget()
widget.resize(800,600)
layout = QtGui.QGridLayout(widget)

label = QtGui.QLabel("Menu")
label.setFrameStyle(label.Box)
label.setMinimumWidth(100)
layout.addWidget(label, 0, 0)

label = QtGui.QLabel("Canvas 1")
label.setFrameStyle(label.Box)
policy = QtGui.QSizePolicy(
QtGui.QSizePolicy.Expanding,
QtGui.QSizePolicy.Expanding)
label.setSizePolicy(policy)
layout.addWidget(label, 0, 1)

label = QtGui.QLabel("Canvas 2")
label.setFrameStyle(label.Box)
layout.addWidget(label, 0, 2)
policy = QtGui.QSizePolicy(
QtGui.QSizePolicy.Expanding,
QtGui.QSizePolicy.Expanding)
label.setSizePolicy(policy)

small

larger

关于Qt : Qwidget size,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12357441/

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