为什么我的Qt文件对话框的固有性取决于环境变量



根据旧答案https://stackoverflow.com/a/2609618/2492801,Qt文件对话框只有在使用静态函数创建对话框时才是本机对话框。这在这里不是真的(事实上,上面引用的答案中的评论表明这已经不是真的了(。

我已经将QFileDialog子类化,并调用exec()方法来显示对话框。在eclipse中,我在启动配置中设置了PATH环境变量,用于查找DLL。让我惊讶的是,如果我在eclipse启动配置中选择"将环境附加到本机环境",我会得到本机Windows文件对话框,如果我选择"将本机环境替换为指定环境",则会得到非本机Qt文件对话框。

有人对此有解释吗?哪个环境变量决定我的文件对话框是否是本机的?

我使用的是Qt 5.14.1和Mingw-w64。

原因很简单:在我的路径中还有其他Qt库。例如,TortoiseHg和MikTeX都带有Qt库,我已经安装了这两个库。显然,当它们在路径内时,它们的一些DLL会被加载,这会影响Qt的行为。如果替换本机环境,则只加载由启动配置定义的路径中的库。

最新更新