Название: Запуск файла через QDesktopServices::openUrl() Отправлено: Vl@domir от Май 15, 2008, 12:51 Еще раз добрый день :)
Как правильно указать полный путь к файлу для запуска через QDesktopServices::openUrl()? например, необходимо запустить файл C:\Folder 1\Folder 2\file.pdf. Если файл в папке с прогой, то проблем нет :) Заранее спасибо. Использую Qt 4.4 + WinXP. Название: Re: Запуск файла через QDesktopServices::openUrl() Отправлено: Vl@domir от Май 15, 2008, 14:26 Нашел решение:
QDesktopServices::openUrl(QUrl(QUrl::fromLocalFile(PATH))) 8) Название: Re: Запуск файла через QDesktopServices::openUrl() Отправлено: Prm от Сентябрь 23, 2009, 08:06 Красивый способ открытия файла!!! ;) Респект автору!
Название: Re: Запуск файла через QDesktopServices::openUrl() Отправлено: Prm от Сентябрь 23, 2009, 15:18 Пока разбирался - обнаружил интересный момент. Если открываемый файл лежит не в папке с EXE-шником приложения и приложение установлено в c:\Program Files\Моя программа\bin - файл отрыть не удалось.
QString help_file = QApplication::applicationDirPath() + "/../doc/help.pdf"; - не открывался. Решение крылось в cleanPath. Привожу пример рабочей функции: bool openFile(const QString &filename) { QString file_name = QDir::cleanPath(filename); if(!QFile::exists(file_name)) { QMessageBox::warning( QApplication::activeWindow(), QApplication::applicationName(), "Невозможно открыть файл `" + file_name + "`. Файл не существует!" ); return false; } if(!QDesktopServices::openUrl(QUrl(QUrl::fromLocalFile(file_name)))) { QMessageBox::information( QApplication::activeWindow(), QApplication::applicationName(), "Невозможно открыть файл `" + file_name + "`. Не найдена программа для его открытия!" ); return false; } return true; } Название: Re: Запуск файла через QDesktopServices::openUrl() Отправлено: shadone от Сентябрь 28, 2009, 11:23 это баг, в Qt 4.6 все должно работать нормально без дополнительных вызовов cleanPath(). (в 4.5 тоже уже должно работать, но я не проверил эту версию)
(кстати дополнительное преобразование в QUrl не обязательно - QUrl::fromLocalFile() (http://doc.qt.nokia.com/4.5/qurl.html) возвращает QUrl: Код
|