只有从命令行启动 Qt-application 才能正常工作

标签 qt ubuntu

我在 Ubuntu 12.04 上使用 Qt Creator 制作了一个非常简单的应用程序。该应用程序读取一个 xml 文件并显示几个图像。但是,当我尝试通过双击另一台机器(运行 Lubuntu)上的图标来启动应用程序时,没有显示图像,也没有读取 xml 文件。当应用程序通过键入 ./App 从命令行启动时,它确实可以正常工作。

为什么它会这样,我该如何解决?

编辑 :读取xml的方法:

QDomDocument doc("document");
QString path = "datastorage.xml"; // xml is in same directory as the executable
QFile xmlFile(path);

if (!xmlFile.open(QIODevice::ReadOnly))
    throw QString("Error with XML: Could not open file " + path);
if (!doc.setContent(&xmlFile)) {
    xmlFile.close();
    throw QString("Error with XML: Could not set QDomDocument content from " + path);
}
xmlFile.close();
QDomElement root = doc.documentElement();
return root;

最佳答案

只需您使用相对路径来读取文件,并且这些路径始终相对于“工作目录”。如果您从控制台启动应用程序,并且所有必需的文件都在应用程序目录中,那么一切正常。从桌面工作目录启动时可能会有所不同。只需将 QCoreApplication::applicationDirPath() 添加到您正在使用的所有路径。

关于只有从命令行启动 Qt-application 才能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14219321/

相关文章:

c++ - QML ListView 多选

linux - Grep 返回 ace 序列而不是我期望的结果

linux - 在 Ubuntu 上以非 root 身份安装软件

c++ - 使用 QDataStream 的 Qt 序列化 bool 值

c++ - QOpenGLWidget QPainter::drawRect 只绘制四个箭头

php - 如何在 Ubuntu 14.04 上更改 php-cli 版本?

linux - 无法运行 "apt-get -f install"

amazon-web-services - 无法从浏览器访问 ubuntu 实例的 AWS 公共(public) DNS

c++ - 当我想退出应用程序时,如何在qt中自动调用析构函数?

c++ - Qt:长期适应运行应用程序未修改/独立于显示分辨率