qt QUrl Открытие pdf

Я пытаюсь открыть файл PDF с приложением по умолчанию через класс «DesktopServices» Qt.

Но я придумываю ShellExecute

'file:///C:/PMPS/PMPSv1/Instuctionsforuse.pdf' failed (error 2). problem.

Вот мой код:

#include <QDesktopServices>
#include <QUrl>

}

void Dialog::guideButtonClicked()
{
QDesktopServices::openUrl(QUrl("file:///C:/PMPS/PMPSv1/Instuctionsforuse.pdf"));
}

person James Sprinks    schedule 02.11.2017    source источник
comment
попробуйте с: QDesktopServices::openUrl(QUrl:::fromLocalFile("C:/PMPS/PMPSv1/Instuctionsforuse.pdf"));   -  person eyllanesc    schedule 02.11.2017
comment
По-прежнему возникает та же ошибка: ShellExecute 'file:///C:/PMPS/PMPS??v1/Instuctionsforuse??.pdf' не удалось (ошибка 2).   -  person James Sprinks    schedule 02.11.2017
comment
Попробуйте с QDesktopServices::openUrl(QUrl:::fromLocalFile("C://PMPS//PMPS‌v1//Instuctionsforuse‌​.pdf"));   -  person eyllanesc    schedule 02.11.2017
comment
Все та же ошибка...   -  person James Sprinks    schedule 02.11.2017
comment
Очень простой способ узнать путь — щелкнуть правой кнопкой мыши файл .pdf, и он появится в вашем браузере и покажет URL-адрес.   -  person eyllanesc    schedule 02.11.2017
comment
Путь правильный...   -  person James Sprinks    schedule 02.11.2017
comment
Я имею в виду формат пути, в винде всегда проблема.   -  person eyllanesc    schedule 02.11.2017
comment
Локальный файл QUrl = QUrl::fromUserInput(file:///C:/PMPS/PMPSv1/Instuctionsforuse.pdf); Вы можете проверить правильность с помощью qDebug() ‹‹ localfile.toLocalFile();   -  person Xplatforms    schedule 02.11.2017
comment
Ах да, это исправлено! Спасибо!   -  person James Sprinks    schedule 02.11.2017


Ответы (1)


Если у вас уже есть обработчики в вашем URL-адресе (например, file:// и т. д.), или если ваш URL-адрес уже закодирован и должен использоваться без каких-либо преобразований и изменений, используйте QUrl::fromUserInput. Когда строка еще не является действительным URL-адресом, выполняется наилучшее предположение, делая различные предположения, связанные с Интернетом.

QUrl localfile = QUrl::fromUserInput("file:///C:/PMPS/PMPSv1/Instuctionsforus‌​e.pdf"); 

Вы можете проверить, правильно ли это:

 qDebug() << localfile.toLocalFile();
person Xplatforms    schedule 02.11.2017