1

您好,我在 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文件,我不知道为什么。有没有更好的方法来连接路径?

4

1 回答 1

1

在 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>
于 2018-04-03T10:15:15.957 回答