1

这很奇怪——我在我的项目中链接到一个非 Qt DLL,并且那个 DLL 显示了一个对话框。

当我使用 Qt Creator+MinGW 编译我的项目时,对话框没有主题 - 它具有 Win98/Classic 风格的矩形控件。

在此处输入图像描述

当我使用 Qt Addin 在 Visual Studio 2010 中导入同一个项目并编译并运行它,而不对项目进行任何更改时,从 DLL 显示的对话框具有正常的 Win7 主题外观(我在 Win7 上)。

在此处输入图像描述

这仅影响 DLL 显示的对话框 - EXE 本身显示的所有对话框的主题都是正确的。

我链接到的 Qt 版本是 4.8.1,适用于 Qt Creator 和 VS2010。

什么可能导致这种奇怪的行为?

4

1 回答 1

1

这可能是因为默认情况下,Visual Studio 在您的可执行文件中包含一个清单文件,其中包含初始化它的必要内容。gui 的主题需要一个清单才能成为操作系统之一(XP、Vista、7)。请参阅此答案和此MSDN 文章

请注意,它与 Qt gui 无关,因为 Qt 小部件的渲染不是通过 OS 渲染器完成的,而是通过QStyle完成的。

于 2012-12-15T11:37:21.950 回答