【问题标题】:Qt - Make QMainWindow to non resizible in Qt DesignerQt - 在 Qt Designer 中将 QMainWindow 设置为不可调整大小
【发布时间】:2013-11-15 22:48:49
【问题描述】:

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

【问题讨论】:

    标签: c++ qt qmainwindow


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 是的,这里的尺寸政策没有做任何改变......我想把所有的 UI 放在一个文件中,以便更多 MVC......但我想没有办法......非常感谢
    • 使用您的代码,我可以启用最小化和关闭,灰色禁用最大化,或者根本没有按钮...我只寻找最小化和关闭,这可能吗?调整大小箭头也没有消失
    【解决方案2】:

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

    setFixedSize(sizeHint());
    

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

    【讨论】:

      【解决方案3】:

      使用 QMainWindow 的 setFixedSize 属性。在设计器中,如果我没记错的话,可以将水平和垂直的sizePolicy设置为Fixed

      【讨论】:

      • 正如我所说,我想在 Qt Designer 中完成(在菜单和选项中单击并选择),您提供的解决方案是编码。
      • @mFeinstein 我记得有一个选项可以设置 Horizo​​ntalSIzePolicy 和 verticalSizePolicy
      • 这个政策没有做任何改变,在窗口行为中,我一直在改变它们,我什么也没看到......
      【解决方案4】:

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

      我尝试使用sizePolicy 并将其设置为mainWindow 的固定;但这对横向和纵向策略都没有任何作用。

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

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

      【讨论】:

        【解决方案5】:

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

            MainWindow.setWindowFlags(QtCore.Qt.MSWindowsFixedSizeDialogHint)
        

        【讨论】:

        • 不要在多个帖子中发布相同的答案,如果您认为它们是同一个问题,请尽可能将其标记为重复。在多个出版物中发布相同的答案被认为是噪音。
        【解决方案6】:

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

        【讨论】:

          猜你喜欢
          • 2023-04-02
          • 1970-01-01
          • 2014-07-18
          • 1970-01-01
          • 2013-06-06
          • 2014-10-24
          • 1970-01-01
          • 2010-10-16
          • 1970-01-01
          相关资源
          最近更新 更多