4

有没有办法在 Qt Designer 中将 QMainWindow 设置为不可调整大小?我看到了很多编码示例,但我想在 Qt Designer 中做尽可能多的 UI 定制。到目前为止,我只能通过将最小尺寸和最大尺寸设置为相等来实现这一点,但窗口一角仍然有调整大小箭头,窗口顶部有一个“最大化”按钮。

4

6 回答 6

3

当您选择 QMainWindow 时,对象的属性确实包含 sizePolicy 的字段,水平和垂直,正如@jester 的回答所提到的,您可以将它们设置为固定。

我发现这并不总是有效,也不确定为什么(可能是由于布局),但正如您所发现的,如果您将 minimumSize 和 maximumSize 字段设置为相同的值,它会满足您的需求。

至于调整大小箭头和最大化按钮,我从来没有能够从 Qt Creator(设计师)那里做到这一点,所以我会说这是不可能的。但是,在类的构造函数中只需要一行代码:-

setWindowFlags(Qt::Window | Qt::CustomizeWindowHint);

默认情况下,窗口标志包括 Qt::WindowMaximizeButtonHint。通过设置上述标志,您表示您希望自定义窗口以包含指定的元素。这也将删除最小化按钮,所以如果你也想要,你应该添加 Qt::WindowMinimizeButtonHint

于 2013-11-05T09:22:04.230 回答
3

我没有使用 Qt Designer;我只是在编写一个从头开始制作的 QMainWindow 的子类。我发现有一个不可调整大小的窗口的解决方案是在设置所有小部件和布局后在 QMainWindow 上调用setFixedSize 。如果您设置得很好,那么您不必手动选择尺寸;您可以从sizeHint获取大小。我在 QMainWindow 的子类中使用的代码行是:

setFixedSize(sizeHint());

我在 Windows 8.1 上的 Qt 5.5 中对此进行了测试,一切看起来都很好:最大化按钮被禁用但其他按钮仍然存在,并且当用户将其移动到边框时,光标不指示调整大小的可能性。

于 2016-01-05T18:35:57.573 回答
1

使用setFixedSizeQMainWindow 的属性。在设计器中,如果我没记错的话,您可以将水平和垂直设置sizePolicyFixed.

于 2013-11-05T07:14:41.447 回答
0

我解决了 Qt5 的问题,即使窗口大小固定,它也会显示鼠标箭头调整窗口大小,但是在 Python 中,您可以对 C++ 进行修改。

    MainWindow.setWindowFlags(QtCore.Qt.MSWindowsFixedSizeDialogHint)
于 2019-05-14T01:33:18.023 回答
0

可悲的是,没有选择这样做;在 VS 中,您可能会在编辑器中找到一个选项,以删除调整窗口大小的鼠标触发器;但由于某种原因,QT5 没有。

我尝试使用sizePolicy并将其设置为 mainWindow 的固定;但这对横向和纵向政策都无济于事。

为了解决这个问题,我确实将我的主窗口minimummaximum大小设置为相同的值;并且当您运行该应用程序时,将不会启用鼠标光标来调整大小。

做这么简单的事情是一种丑陋的方式,但这是我在 QT 设计器中找到的唯一方式,无需使用代码。

于 2017-11-28T02:03:32.220 回答
0

这是一个旧帖子,但如果有人需要,我想提供帮助。我找到了一种方法(不是那么漂亮),但它直接从 QTDesigner 工作。您可以通过在“MinimumSize”和“MaximumSize”属性中写入高度和宽度的值来锁定调整大小。Oviously 还按照其他用户的说明在垂直和水平方向设置了“固定”。这将删除放大窗口的按钮。

于 2021-01-11T14:24:12.067 回答