Откройте локальный файл HTML из кода в Qt на Mac OSx
Здравствуйте, у меня небольшая проблема с Qt на Mac OSX.
Так что в моей программе я пытаюсь открыть местный .html
файл находится по тому же пути, что и приложение.
Учитывая, что Qt является кроссплатформенным, моя попытка работала как для Windows, так и для Ubuntu, и я предположил, что OSX не должен иметь проблем, поскольку он основан на Unix.
Это мой attmpet
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
файл, и я не уверен, почему. Есть ли лучший способ объединить путь?
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>