Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt:Qwidget大小_Qt_Size_Qwidget - Fatal编程技术网

Qt:Qwidget大小

Qt:Qwidget大小,qt,size,qwidget,Qt,Size,Qwidget,我正在用Qt编写一个程序,如下所示: 主窗口是我定义的类窗口:QWidget。它有一个QGridLayout,基本上有1行3列。如您所见,第一列包含一个菜单(这是一个classmenu:QWidget),第二列和第三列分别包含一个画布(我也定义了一个classcanvas:QWidget) 我真的很难弄清楚这些尺寸是如何工作的。到目前为止,我刚刚为第一列的宽度(在我的窗口布局中)定义了一个最小大小来固定菜单的宽度,并且在其构造函数中为Canvas设置了一个固定大小(如下所示:setFixedS

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

主窗口是我定义的类
窗口:QWidget
。它有一个
QGridLayout
,基本上有1行3列。如您所见,第一列包含一个菜单(这是一个class
menu:QWidget
),第二列和第三列分别包含一个画布(我也定义了一个class
canvas:QWidget

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

问题当然是,在用户重新缩放窗口时,这种行为会很糟糕。我想我想做的是将画布的
sizeHint
设置为
size\u(以像素为单位)
(我喜欢的大小),但这似乎不太可能。我也希望我的画布在任何时候都有相同的高度和宽度。我一直在阅读Qt文档,并尝试了一些方法,但我没有找到解决方案


根据你的说法,该怎么办?非常感谢您的见解。

您只需将画布小部件设置为
扩展
大小策略即可。随着布局尺寸的增加,它们将同样占用剩余空间

下面是一个用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)


我提交了一个答案……但正如@karlphillip所建议的,请接受您以前的一些答案。特此说明!我是这个网站的新手。jdi,非常感谢你的回答。我会在几分钟内告诉你它是如何工作的。这很好,看起来我将能够处理这个问题。谢谢!