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

主窗口是Window : QWidget我定义的类.它有一个QGridLayout基本上有1行3列.如您所见,第一列包含一个菜单(这是一个类Menu :QWidget),第二列和第三列各包含一个画布(Canvas : QWidget我也定义了一个类).
我很难弄清楚尺寸是如何工作的.到目前为止,我刚刚为第一列的宽度(在我的窗口的布局中)定义了最小大小来修复菜单的宽度,并且我Canvas在其构造函数中设置了固定大小(如下所示:) setFixedSize(QSize(size_in_pixels, size_in_pixels));.
问题当然是在用户重新调整窗口的情况下这种情况很糟糕.我想我想做的是将我的画布设置sizeHint为size_in_pixels(我的首选尺寸),但这似乎不太可能.我也希望我的画布在任何时候都具有相同的高度和宽度.我一直在阅读Qt文档并尝试了几件事,但我无法提出解决方案.
按照你的方式去做什么?非常感谢您的见解.
您只需将画布小部件设置为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)
Run Code Online (Sandbox Code Playgroud)


| 归档时间: |
|
| 查看次数: |
14780 次 |
| 最近记录: |