Russian Qt Forum

Qt => Вопросы новичков => Тема начата: volkov9999 от Июль 01, 2012, 15:32



Название: Как вставить ссылку на pdf документ?
Отправлено: volkov9999 от Июль 01, 2012, 15:32
Приветствую дорогие форумчане! Over 100500 лет не занимался qt и опять все забыл.. :D
Вопрос: как сделать ссылку на pdf документ, который будет прикрепляться в папку с проектом? Вроде тут совсем все просто должно быть. Вставил элемент Qlabel и в нем указал ссылку на документ, но не сработало. Что не так?


Название: Re: Как вставить ссылку на pdf документ?
Отправлено: volkov9999 от Июль 01, 2012, 16:40
При наведении на ссылку появляется палец (характерная реакция на ссылки), при клике правой кнопки мышки выскакивает окошко "Copy Link Location" - можно скопировать ссылку. Ссылка правильная, но почему-то при обычном нормальном клике - не работает.


Название: Re: Как вставить ссылку на pdf документ?
Отправлено: volkov9999 от Июль 01, 2012, 17:50
Итак, благодаря нашим коллективным действиям   ;D нашел решение:

bool QDesktopServices::openUrl ( const QUrl & url ) [static]


Название: Re: Как вставить ссылку на pdf документ?
Отправлено: volkov9999 от Июль 01, 2012, 19:23
Вот пример, кому надо.
Всем мир, добро, котятки.


Название: Re: Как вставить ссылку на pdf документ?
Отправлено: Bepec от Июль 01, 2012, 22:11
Я тебе по секрету скажу - в QLabel свойство надо изменить, чтоб разрешить ссылки открывать :D

А openURL это уже другая опера :D


Название: Re: Как вставить ссылку на pdf документ?
Отправлено: volkov9999 от Июль 02, 2012, 01:27
свойство   openExternalLinks - галочку поставить. Но почему-то не заработало...


Название: Re: Как вставить ссылку на pdf документ?
Отправлено: volkov9999 от Июль 11, 2012, 14:10
Обнаружил проблему
При клике на кнопку у меня вызывается слот openPDF() . Вот его код:

Код:
void Widget::openPDF()

{
    string_path.clear();
    string_path = QApplication::applicationDirPath() ;  // получаем полный путь, в котором запущена программа
    string_path.operator += ("/imageformats/spravdan.pdf") ; // добавляем к адресу положение пдф документа
    QDesktopServices::openUrl(QUrl(string_path , QUrl::TolerantMode));
    return ;
}


И все было бы хорошо, только если в полном пути у нас имеются нехороший символ, такой как пробел  - то ссылка не открывается. Пытался заменить пробел на его урл аналог '%20'  - безуспешно.
Отсюда вопрос:
Как заменить пробел чтобы ссылка заработала? или
Как сделать возможность запуска файла без указания апсолютного пути?

Bepec был прав. Действительно в QLabel есть свойство, которое разрешает открывать ссылки - но там тоже запуск получается только при указании апсолютоно пути вроде
f:\qt\project-build-desktop\release\file.pdf

Т.е. пробел в пути даже при помощи Qlabel не обойти. Что посоветуете?


Название: Re: Как вставить ссылку на pdf документ?
Отправлено: kostya2vntu от Июль 11, 2012, 15:56
Попробуй экранировать пробел так: "\ " (а-ля unix-way)


Название: Re: Как вставить ссылку на pdf документ?
Отправлено: volkov9999 от Июль 11, 2012, 23:19
Экранирование не помогло :-\


Название: Re: Как вставить ссылку на pdf документ?
Отправлено: volkov9999 от Июль 12, 2012, 00:33
Проблема остается... Как временное решение нашел выход - использование
QProcess::execute("explorer .\\file_dir\ ");    - открывает нужную директорию, с учетом того, что там пока один файл - сойдет, но буду продолжать искать.
Всем лучиков радости! :-*