从Qt Creator启动时,Windows 10上的Qt应用程序的行为有所不同

问题描述

我试图在Windows 10上构建Qt应用程序,当我从Qt Creator IDE中运行它以及在其外部运行exe时,我得到的外观却有所不同。

来自Qt Creator

Qt Creator外部

我希望它始终看起来像Qt Creator中的样子:一个外观更好的按钮,没有多余的第二个窗口。

复制:使用CMake作为构建系统和Desktop Qt 5.15.0 MSVC2019 64位套件,在Qt Creator(Qt Widgets应用程序)中创建一个新项目。使用设计器将按钮添加到.ui并进行编译。要使应用程序在IDE外部运行,请将其Qt5Cored.dll,Qt5Guid.dll,Qt5Widgetsd.dll和platform / qwindowsd.dll都放在Qt安装目录中的5.15.0 / msvc2019_64文件夹中。 >

编辑:仅当我使用CMake时,才会出现多余的窗口,而使用qmake生成的项目则不会出现。但是,我将GUI添加到现有项目中,因此“使用qmake”不是解决方案。

解决方法

Qt环境的本质是,如果您未在程序代码中指定,则Qt将从其运行环境中继承样式。请参见QApplication-style命令行标志。>

Qt Creator是用Qt编写的,听起来好像在您的安装中设置了非默认样式。从QT Designer预览表单时,您可以选择该表单应以哪种样式显示。

看起来控制台窗口可能是CMake项目设置的结果,例如add_executable在没有WIN32参数的情况下被调用。 https://cmake.org/cmake/help/latest/command/add_executable.html

它也可以由项目中的某些内容创建,例如如果有初始化控制台API的框架。

,

控制台窗口问题是由于缺少Swift add_executable的WIN32参数引起的。但是,主题问题是由其他原因引起的。

this thread进行操作,看来从Qt 5.14开始,如果可执行文件的dll存储在其旁边,并且没有样式文件夹,则使用Windows主题(类似于Windows 95)。但是,添加dll styles / qwindowsvistastyled.dll可以解决此问题。