在 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>