为啥 Qt 用户界面在发布模式和调试模式下看起来不同

Posted

技术标签:

【中文标题】为啥 Qt 用户界面在发布模式和调试模式下看起来不同【英文标题】:Why Qt user interface looks different in Release mode than in Debug mode为什么 Qt 用户界面在发布模式和调试模式下看起来不同 【发布时间】:2019-02-04 13:40:24 【问题描述】:

我想知道为什么我的用户界面在发布模式和调试模式下看起来不同(看起来不太好看)?是否需要在发布目录中添加一些特殊的 dll 或修改项目的 .pro 文件?

调试模式:

https://imgur.com/CZ80a8x.png

发布模式:

https://imgur.com/8f8C71K.png

添加以下必要的 dll 文件后会出现此“发布”用户界面:

platforms/qminimal.dll
platforms/qoffscreen.dll
platforms/qwebgl.dll
platforms/qwindows.dll
Qt5Charts.dll
Qt5Core.dll
Qt5Gui.dll
Qt5SerialPort.dll
Qt5Widgets.dll
STDFU.dll
STDFUFiles.dll
STFFUPRT.dll
STTubeDevice30.dll

我尝试添加 qwindowsvistastyle.dll,但看起来一样。

【问题讨论】:

您是否在样式文件夹中添加了 qwindowsvistastyle.dll DLL? (styles/qwindowsvistastyle.dll) 根据我的经验,发布和调试模式之间的差异是由于未初始化的变量。根据您的配置,未初始化变量的处理方式会因模式而异。因此,请确保您的所有成员(尤其是整数、布尔值、指针)都已初始化。 一般来说建议使用qtwindeploy tool,但这似乎不是问题,它更像是在你的应用程序中设置了扁平的外观和感觉。您使用的是 QML 还是 QtWidgets? 你几乎肯定忘记了一些 dll。也可能发生您忘记样式表文件或以其他方式遇到资源问题。小部件还是 QML?无论如何,如果不是初始化问题,比较 Debug 和 Release 文件夹可能会有所帮助。 只是好奇,您知道您是如何获得第二个视图的吗?它比平面视图漂亮得多。我非常努力地想把它找回来,但它似乎没有用:( 【参考方案1】:

我已经解决了。

如果在这种情况下 DLL 文件来自较新版本的 Qt 5.11,并且 EXE 是使用旧版本 - 5.9 编译的,则似乎某些 DLL 函数无法从 EXE 中使用,它们被替换为默认的。我已经从我的 Qt 发行版中获取了 DLL 文件,并且一切正常。

【讨论】:

以上是关于为啥 Qt 用户界面在发布模式和调试模式下看起来不同的主要内容,如果未能解决你的问题,请参考以下文章

为啥在调试模式和运行模式下保留计数不同?

为啥 Visual Studio 不能在“不调试就启动”模式下打开文件?

为啥消息处理程序在调试模式下不起作用?

Qt creator 调试模式消失了

为啥 xamarin 表单列表视图中的组标题在发布模式下不可见?

为啥发布和调试模式下的代码行为不同?