2009-10-24 64 views
0

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

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

谢谢。

回答

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()))); 
} 
+0

谢谢。我做了一个QFile :: copy(“:/ressource.pdf”,“ressource.pdf”);然后一个QDesktopServices :: openUrl,它工作正常:) – Klaus

1

你不应该需要打开资源文件,如果他们添加到您的正确Qmake工程文件:

RESOURCES += resources.qrc 

那么你应该能够使用包含在你的资源文件中的文件通过语法,

:/path/filename 

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

供参考::上面所用 QDesktopServices ::的OpenURL是用来打开第e具有特定网页的标准浏览器。 而且,您不应该在路径名等上使用tr(“”),而仅在显示给用户的文本上(应该翻译为多语言应用程序)