【问题标题】:QLibraryInfo doesn't seem to load qt.confQLibraryInfo 似乎没有加载 qt.conf
【发布时间】:2011-03-02 10:10:08
【问题描述】:

我只安装了 Qt 4.7.2,我正在尝试使用 QLibraryInfo 类。我的问题是QLibraryInfo::location(QLibraryInfo::PrefixPath) 总是返回C:\work3\qt-4.7-vs2010-x86,这在我的生成机器上不存在(应该是C:\Qt\qt-4.7.2)。

根据the documentation,我尝试在我的程序旁边创建一个qt.conf 文件,但问题仍然存在。以下是它的内容:

[Paths]
Prefix=C:/Qt/qt-4.7.2/

目前我使用符号链接来绕过该问题,但我想知道是否有合适的解决方案。 谢谢。

编辑 这是使用QLibraryInfo的程序:

int main(int argc, char ** argv)
{
    QCoreApplication app(argc, argv); //< added after Piotr's suggestion

    QFile outf("qtdirs.out");

    if (!outf.open(QIODevice::WriteOnly|QIODevice::Truncate|QIODevice::Text))
        return 1;

    QTextStream out(&outf);

    out << QLibraryInfo::location(QLibraryInfo::PrefixPath) << '\n';
    out << QLibraryInfo::location(QLibraryInfo::HeadersPath) << '\n';

...
}

【问题讨论】:

  • 您是从源代码构建 Qt 4.7.2 还是安装了二进制文件?
  • 我安装了qt.nokia.com/downloads/windows-cpp-vs2008提供的二进制文件
  • 在创建 QApplication/QCoreApplication 之后是否使用 QLibraryInfo?
  • 不,QApplication 对象甚至从未被创建。该应用程序的唯一目的是将 Qt 路径写入文件。这是构建 PyQt 的配置脚本的第一步。
  • 这就是问题所在。你至少需要 QCoreApplication 才能工作。

标签: c++ windows qt


【解决方案1】:

必须创建一个 QCoreApplication,因为 QLibraryInfo 能够通过它来确定从中加载 qt.conf 文件的应用程序目录 (QCoreApplication::applicationDirPath())。或者,可以将 qt.conf 作为资源构建到应用程序中,路径为“:/qt/etc/qt.conf”。

【讨论】:

  • 正如我在 cmets 中提到的,实例化 QCoreApplication 对象不会改变任何事情。
  • 肯定有其他问题。如果将其添加到示例的底部,输出会是什么? out &lt;&lt; QCoreApplication::applicationDirPath() &lt;&lt; '\n'; out &lt;&lt; "qt.conf " &lt;&lt; QDir(QCoreApplication::applicationDirPath()).exists("qt.conf") &lt;&lt; '\n';
  • 我的错,我没有使用正确的 exe。添加 QCoreApplication 是正确的答案。
猜你喜欢
  • 2021-09-20
  • 1970-01-01
  • 2013-10-08
  • 1970-01-01
  • 1970-01-01
  • 2016-07-26
  • 1970-01-01
  • 1970-01-01
  • 2014-05-22
相关资源
最近更新 更多