【发布时间】:2013-11-15 22:48:49
【问题描述】:
有没有办法在 Qt Designer 中将 QMainWindow 设置为不可调整大小?我看到了很多编码示例,但我想在 Qt Designer 中做尽可能多的 UI 定制。到目前为止,我只能通过将最小尺寸和最大尺寸设置为相等来实现这一点,但窗口角落仍然有调整大小的箭头,窗口顶部还有一个“最大化”按钮。
【问题讨论】:
标签: c++ qt qmainwindow
有没有办法在 Qt Designer 中将 QMainWindow 设置为不可调整大小?我看到了很多编码示例,但我想在 Qt Designer 中做尽可能多的 UI 定制。到目前为止,我只能通过将最小尺寸和最大尺寸设置为相等来实现这一点,但窗口角落仍然有调整大小的箭头,窗口顶部还有一个“最大化”按钮。
【问题讨论】:
标签: c++ qt qmainwindow
当您选择 QMainWindow 时,对象的属性确实包含 sizePolicy 的字段,水平和垂直,正如@jester 的回答所提到的,您可以将它们设置为固定。
我发现这并不总是有效,也不确定为什么(可能是由于布局),但正如您所发现的,如果您将 minimumSize 和 maximumSize 字段设置为相同的值,它会执行您的操作想要。
至于调整大小箭头和最大化按钮,我从来没有从 Qt Creator(设计师)那里做到这一点,所以我会说这是不可能的。但是,在类的构造函数中只需要一行代码:-
setWindowFlags(Qt::Window | Qt::CustomizeWindowHint);
默认情况下,窗口标志包括 Qt::WindowMaximizeButtonHint。通过设置上述标志,您表示您希望自定义窗口以包含指定的元素。这也将删除最小化按钮,所以如果你也想要,你应该添加 Qt::WindowMinimizeButtonHint
【讨论】:
我没有使用 Qt 设计器;我只是在编写一个从头开始制作的 QMainWindow 的子类。我发现有一个不可调整大小的窗口的解决方案是在设置所有小部件和布局后在 QMainWindow 上调用setFixedSize。如果您设置得很好,那么您不必手动选择尺寸;您可以从sizeHint 获取大小。我在 QMainWindow 的子类中使用的代码行是:
setFixedSize(sizeHint());
我在 Windows 8.1 上的 Qt 5.5 中对此进行了测试,一切看起来都很好:最大化按钮被禁用但其他按钮仍然存在,并且当用户将光标移到边框时,光标不指示调整大小的可能性。
【讨论】:
使用 QMainWindow 的 setFixedSize 属性。在设计器中,如果我没记错的话,可以将水平和垂直的sizePolicy设置为Fixed。
【讨论】:
遗憾的是,没有办法这样做;在VS中,您可能会在编辑器中找到一个选项,以删除调整窗口大小的鼠标触发器;但由于某种原因,QT5 没有。
我尝试使用sizePolicy 并将其设置为mainWindow 的固定;但这对横向和纵向策略都没有任何作用。
为了解决这个问题,我确实将我的主窗口minimum 和maximum 的大小设置为相同的值;并且当您运行应用程序时,鼠标光标将无法调整大小。
做这么简单的事情是一种丑陋的方式,但这是我在 QT 设计器中找到的唯一方式,无需使用代码。
【讨论】:
我解决了 Qt5 的问题,即使窗口大小固定,也会显示鼠标箭头调整窗口大小,但是在 Python 中,你可以对 C++ 进行修改。
MainWindow.setWindowFlags(QtCore.Qt.MSWindowsFixedSizeDialogHint)
【讨论】:
这是一个旧帖子,但如果有人需要,我想提供帮助。 我找到了一种方法(不是那么漂亮),但它直接从 QTDesigner 工作。 您可以通过在“MinimumSize”和“MaximumSize”属性中写入高度和宽度的值来锁定调整大小。 Oviously 还按照其他用户的说明在垂直和水平方向设置了“固定”。 这将删除放大窗口的按钮。
【讨论】: