在 Mac OSx 从 Qt 中的代码打开本地 HTML 文件
Open local HTML file from code in Qt on Mac OSx
您好,我在 Mac OSX.
上遇到了一个关于 Qt 的小问题
所以在我的程序中,我试图打开一个与应用程序位于同一路径的本地 .html
文件。
鉴于 Qt 是跨平台的,我的尝试对 Windows 和 Ubuntu 都有效,我认为 OSX 应该没有问题,因为它是基于 Unix 的。
这是我的攻击
void MainWindow::openBrowser(bool)
{
QString link = QDir::currentPath()+"/index.html"; // rename the file
if(! QDesktopServices::openUrl(QUrl(link.trimmed())))
{
displayMessage("Access Error", "Unable to open a file");
}
}
OSX 找不到相同的 index.html
文件,我不确定为什么。
有没有更好的方法来连接路径?
在 MacOS 上,QUrl
使用 FQ 名称 (file://absolute_file.name
) 工作,这应该是所有平台上的可移植语法。
可以这样调用:
if(! QDesktopServices::openUrl(QUrl("file:" + link.trimmed()))) // windows does not like ://
{
qDebug() << "Access Error", "Unable to open a file";
}
虽然本地 html 文件不需要,但 Qt 在 Info.plist
中将此条目用于外部 URL:
<key>NSAppTransportSecurity</key>
<!-- NOTE! For more information, see: https://developer.apple.com/library/prerelease/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW33-->
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
您好,我在 Mac OSX.
上遇到了一个关于 Qt 的小问题所以在我的程序中,我试图打开一个与应用程序位于同一路径的本地 .html
文件。
鉴于 Qt 是跨平台的,我的尝试对 Windows 和 Ubuntu 都有效,我认为 OSX 应该没有问题,因为它是基于 Unix 的。
这是我的攻击
void MainWindow::openBrowser(bool)
{
QString link = QDir::currentPath()+"/index.html"; // rename the file
if(! QDesktopServices::openUrl(QUrl(link.trimmed())))
{
displayMessage("Access Error", "Unable to open a file");
}
}
OSX 找不到相同的 index.html
文件,我不确定为什么。
有没有更好的方法来连接路径?
在 MacOS 上,QUrl
使用 FQ 名称 (file://absolute_file.name
) 工作,这应该是所有平台上的可移植语法。
可以这样调用:
if(! QDesktopServices::openUrl(QUrl("file:" + link.trimmed()))) // windows does not like ://
{
qDebug() << "Access Error", "Unable to open a file";
}
虽然本地 html 文件不需要,但 Qt 在 Info.plist
中将此条目用于外部 URL:
<key>NSAppTransportSecurity</key>
<!-- NOTE! For more information, see: https://developer.apple.com/library/prerelease/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW33-->
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>