Russian Qt Forum

Qt => Общие вопросы => Тема начата: Cepheus от Февраль 01, 2012, 14:39



Название: qdesktopservices открытие файлов
Отправлено: Cepheus от Февраль 01, 2012, 14:39
Код:
QUrl url = QUrl::fromLocalFile("/path_to_binary_file");
QDesktopServices::openUrl(url);
как видно пытаюсь открыть бинарный файл, да вообщем любой, проблема в том, он все запускает через браузер, как будто все приложения связанны с ним=)

Все это дело под линуксом


Название: Re: qdesktopservices открытие файлов
Отправлено: Пантер от Февраль 01, 2012, 14:40
QProcess используй.


Название: Re: qdesktopservices открытие файлов
Отправлено: mutineer от Февраль 01, 2012, 14:45
QDesktopServices::openUrl открывает файлы в связанном приложении. Если такового нет - открывает в браузере.

Связанных с бинарниками приложений в системе нет (что логично), поэтому и открывается в браузере. Для запуска бинаря слушай Пантера:)


Название: Re: qdesktopservices открытие файлов
Отправлено: Cepheus от Февраль 01, 2012, 14:48
открывая в системе текстовый файл он открывается через текстовый редактор, а qdesktopservices открывает его всеравно через браузер.
С QProcess бинарные открываются, зато при попытки открыть тестовый файл, глухота налюдается


Название: Re: qdesktopservices открытие файлов
Отправлено: mutineer от Февраль 01, 2012, 14:51
С QProcess бинарные открываются, зато при попытки открыть тестовый файл, глухота налюдается

Если вчитаться в доку по QProcess, то тщетность попыток такого открытия текстовых файлов станет понятна - имя текстового файла это ж не имя программы


Название: Re: qdesktopservices открытие файлов
Отправлено: Cepheus от Февраль 01, 2012, 14:53
С QProcess бинарные открываются, зато при попытки открыть тестовый файл, глухота налюдается

Если вчитаться в доку по QProcess, то тщетность попыток такого открытия текстовых файлов станет понятна - имя текстового файла это ж не имя программы

ок задам переформулирую вопрос, раз так не понятно! как открывать файлы в связанном приложении, для этого есть qdesktopservices, но как описал выше, он считает что txt файлы и все другие(ini,xml и т.д.)связанны с браузером, не кажется Вам что это бред.
бинарные ладно открою через Qprocess.


Название: Re: qdesktopservices открытие файлов
Отправлено: mutineer от Февраль 01, 2012, 15:08
openUrl для открытия файлов использует команды xdg-open, затем gnome-open (если в гноме). Попробуй запустить их в консоли и поверить правильно ли они открывают нужные файлы


Название: Re: qdesktopservices открытие файлов
Отправлено: Cepheus от Февраль 02, 2012, 07:34
openUrl для открытия файлов использует команды xdg-open, затем gnome-open (если в гноме). Попробуй запустить их в консоли и поверить правильно ли они открывают нужные файлы
нет не правильно, xdg-open file, так-же открывает в браузере, значит открытие файлов через ф. менеджеры, открываются другим способом.
p.s. видимо этот вопрос относиться к linux=)


Название: Re: qdesktopservices открытие файлов
Отправлено: Cepheus от Февраль 02, 2012, 07:50
отпишусь тут, хотя к qt отношения не имеет

поправил скрипт xdg-open, функцию detectDE()


Код
C
 #  if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde;
 #  elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome;
 #  elif xprop -root _DT_SAVE_MODE | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce;
 #  elif [ x"$DESKTOP_SESSION" == x"LXDE" ]; then DE=lxde;
 #  fi
DE=kde
так работает, но это хак, попробую спросить решения у linux-оидов