QDesktopServices :: openUrl with Resource

时间:2009-10-24 11:31:32

标签: c++ qt

如何使用qressource命令打开资源文件(QDesktopServices::openUrl)?

我尝试了几种方法,但似乎都没有(例如QDesktopServices::openUrl(QUrl(tr(":ressource.pdf")));

谢谢。

2 个答案:

答案 0 :(得分:3)

不幸的是,你不能直接这样做,先将它保存到文件中。

我检查了Qt源。这是因为url直接传递给浏览器或其他应用程序(取决于协议)。这些应用程序将看不到您的资源,因为它们处于不同的进程中。

以下是相关来源:

qdesktopservices.cpp:


bool QDesktopServices::openUrl(const QUrl &url)
{
   ...
}

qdesktopservices_x11.cpp:


static bool openDocument(const QUrl &url)
{
    ...
}

static bool launchWebBrowser(const QUrl &url)
{
   ...
}

inline static bool launch(const QUrl &url, const QString &client)
{  
    return (QProcess::startDetached(client + QLatin1Char(' ') + QString::fromLatin1(url.toEncoded().constData())));  
}

答案 1 :(得分:1)

如果资源文件正确添加到qmake项目文件中,则不需要打开它们:

RESOURCES += resources.qrc

然后,您应该能够通过上面使用的语法使用资源文件中包含的文件:

:/path/filename

(资源文件中的路径和文件名)

供参考: QDesktopServices :: openUrl用于打开具有特定网页的标准浏览器。 并且,您不应仅对显示给用户的文本(​​应该为多语言应用程序翻译)使用路径名等上的tr(“”)