如何使用命令QDesktopServices::openUrl
打开资源文件(qressource
)?QDesktopServices :: openUrl with Ressource
我尝试了几种方法,但似乎没有工作(例如QDesktopServices::openUrl(QUrl(tr(":ressource.pdf")));
)
谢谢。
如何使用命令QDesktopServices::openUrl
打开资源文件(qressource
)?QDesktopServices :: openUrl with Ressource
我尝试了几种方法,但似乎没有工作(例如QDesktopServices::openUrl(QUrl(tr(":ressource.pdf")));
)
谢谢。
不幸的是,您不能直接将它保存到首先是一个文件。
我检查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())));
}
你不应该需要打开资源文件,如果他们添加到您的正确Qmake工程文件:
RESOURCES += resources.qrc
那么你应该能够使用包含在你的资源文件中的文件通过语法,
:/path/filename
(路径和文件名的资源文件内)
供参考::上面所用 QDesktopServices ::的OpenURL是用来打开第e具有特定网页的标准浏览器。 而且,您不应该在路径名等上使用tr(“”),而仅在显示给用户的文本上(应该翻译为多语言应用程序)
谢谢。我做了一个QFile :: copy(“:/ressource.pdf”,“ressource.pdf”);然后一个QDesktopServices :: openUrl,它工作正常:) – Klaus