Qt : Qwidget 大小
Posted
技术标签:
【中文标题】Qt : Qwidget 大小【英文标题】:Qt : Qwidget size 【发布时间】:2012-09-10 18:28:38 【问题描述】:我正在用 Qt 编写一个如下所示的程序:
主窗口是我定义的一个类Window : QWidget
。它有一个QGridLayout
,基本上有 1 行和 3 列。如您所见,第一列包含一个菜单(这是一个类Menu :QWidget
),第二列和第三列各包含一个画布(我也定义了一个类Canvas : QWidget
)。
我很难弄清楚尺寸是如何工作的。到目前为止,我刚刚为第一列的宽度(在我的窗口布局中)定义了一个最小尺寸来固定菜单的宽度,并且我在其构造函数中为Canvas
设置了一个固定尺寸(例如:setFixedSize(QSize(size_in_pixels, size_in_pixels));
)。
问题当然是在用户重新缩放窗口时这行为很糟糕。我想我想做的是将画布的sizeHint
设置为size_in_pixels
(我的首选尺寸),但这似乎不太可能。我还希望我的画布始终具有相同的高度和宽度。我一直在阅读 Qt 文档并尝试了几件事,但我无法提出解决方案。
根据你的说法,你会怎么做?非常感谢您的见解。
【问题讨论】:
我提交了答案...但正如@karlphillip 建议的那样,请接受您之前的一些答案。 注意到了!我是这个网站的新手。 jdi,非常感谢您的回答。稍后我会告诉你它是如何工作的。 【参考方案1】:您可以将画布小部件设置为Expanding
大小策略。随着布局大小的增加,它们将同样消耗剩余空间。
这是一个例子,用 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)
【讨论】:
这很棒,看起来我可以使用它了。非常感谢!以上是关于Qt : Qwidget 大小的主要内容,如果未能解决你的问题,请参考以下文章