C++ 可能的Qt5错误:调用setFixedSize()将禁用主窗口';s关闭按钮(在Win7下)

C++ 可能的Qt5错误:调用setFixedSize()将禁用主窗口';s关闭按钮(在Win7下),c++,qt,qt5,qmainwindow,C++,Qt,Qt5,Qmainwindow,我之所以发布这篇文章,主要是因为我浪费了一些时间寻找解决方案,也是出于好奇 根据大众要求,一个逐步可复制的示例: 从Qt设计器创建Qt小部件项目。 将所有选项保留为默认值,但项目名称除外(我称我的“bob”)。 将生成目标设置为MinGW X64 使用默认自动生成的代码框架编译并启动可执行文件(我是在调试模式下完成的,但发布版也不起作用)。 检查主窗口是否可调整大小,右上角的关闭按钮是否正常工作 打开文件“mainwindow.cpp”并添加setFixedSize调用,如下所示: #inclu

我之所以发布这篇文章,主要是因为我浪费了一些时间寻找解决方案,也是出于好奇

根据大众要求,一个逐步可复制的示例:
  • 从Qt设计器创建Qt小部件项目。
    将所有选项保留为默认值,但项目名称除外(我称我的“bob”)。
    将生成目标设置为MinGW X64

  • 使用默认自动生成的代码框架编译并启动可执行文件(我是在调试模式下完成的,但发布版也不起作用)。
    检查主窗口是否可调整大小,右上角的关闭按钮是否正常工作

  • 打开文件“mainwindow.cpp”并添加
    setFixedSize
    调用,如下所示:

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
        , ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
        setFixedSize(geometry().size()); // <--- this line added
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    #包括“mainwindow.h”
    #包括“ui_main window.h”
    主窗口::主窗口(QWidget*父窗口)
    :QMainWindow(父级)
    ,ui(新ui::Main窗口)
    {
    用户界面->设置用户界面(此);
    
    setFixedSize(geometry().size());//根据官方的bug跟踪程序,确实存在影响某些版本的bug(可能是Qt5.12.5引入的回归)

    请看一看:

    但是,他们报告问题已通过Qt 5.14修复,并后端口至Qt 5.13.2

    您使用的Qt Creator是使用Qt 5.14编译的,但我不清楚您是否也使用Qt 5.14或其他版本编译应用程序。用于编译Qt Creator的版本和用于代码的工具包显然是两种不同的东西。因此,我建议检查您是否确实使用Qt 5.14编译应用程序应该有修复程序的版本,如果有,请向bugreports.qt.io报告问题


    由于这是Qt的错误,我们在这里做不了什么…

    我无法重现“错误”。它按预期工作,并且我仍然让窗口的关闭按钮工作。但我在windows 10下。可能是其他原因造成了这种行为。无法在windows 10上用Qt 5.5重现。调用
    setFixedSize(this->geometry().size())
    在ctor中禁用了大小调整,但关闭按钮按预期工作。我无法重现问题。Windows 7 x64、Qt 5.12和VS 2017。使用Aero和classic主题进行了测试。对不起,我没有安装mingw。这一次我以您为例使用了这个词。对我来说仍然无法重现。这让我相信它在某种程度上与ted到您的平台设置。使用mingw时可能会出现一些wierd行为。您能用visual studio简单地运行它吗?在QML中创建的windows也会出现同样的问题。我可以复制使用Qt 5.12.6和MSVC 2017 x64在windows 7上运行经典主题的测试程序的错误。使用Aero主题的测试不受影响。我以前的测试是Qt 5.12.0也不受影响。Qt 5.14.0也可以。在我看来,问题和答案对于bug修复非常有价值,这是软件开发的一个组成部分。公开开发的开源项目不应该担心这一点。在这种情况下,最新的Qt版本似乎已经修复了bugs、 但是最新的LTS 5.12.6受到了影响,现在还没有5.12.7。非常感谢。事实上,在我努力使其与MSVC 2019和最后的Win7 SDK一起工作时,我可能把我的环境搞砸了。我已经安装了几个连续版本的Qt,那里可能出了问题。