Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Qt gvfs-open: file:ftp://  (Прочитано 1525 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Zeka13

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1177
  • 18.10 Gnome x64 GTX 970
    • Просмотр профиля
Qt gvfs-open: file:ftp://
« : 12 Октября 2012, 21:13:26 »
Всем доброго времени суток, умею открыть папки из кода Qt
DesktopServices::openUrl(QUrl::fromLocalFile(PathString));Хочу, например в наутилусе, открыть ftp папку

QDesktopServices::openUrl(QUrl::fromLocalFile("ftp://188.134.91.230"))но получаю
gvfs-open: file:ftp://188.134.91.230: ошибка открытия адреса: Действие не поддерживается

Если делать просто через QUrl(1.1.1.1), то открывается а браузере, что мне не подходит, есть какой-нибудь способ? Заранее спасибо за ответы!

Пользователь решил продолжить мысль 12 Октября 2012, 21:17:35:
или это решается только через API или DBus?
« Последнее редактирование: 12 Октября 2012, 21:17:35 от Zeka13 »
Если Wine - это костыль , то  Punto Switcher - это протез , а Daemon Tools инвалидное кресло.

Оффлайн hippi90

  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
Re: Qt gvfs-open: file:ftp://
« Ответ #1 : 12 Октября 2012, 21:44:16 »
Через определение собственного хэндлера для каждого типа URL, чье поведение должно отличаться от стандартного.

Оффлайн Zeka13

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1177
  • 18.10 Gnome x64 GTX 970
    • Просмотр профиля
Re: Qt gvfs-open: file:ftp://
« Ответ #2 : 12 Октября 2012, 22:45:06 »
hippi90, а попроще можно пожалуйста?
« Последнее редактирование: 12 Октября 2012, 22:55:43 от Zeka13 »
Если Wine - это костыль , то  Punto Switcher - это протез , а Daemon Tools инвалидное кресло.

Оффлайн hippi90

  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
Re: Qt gvfs-open: file:ftp://
« Ответ #3 : 13 Октября 2012, 17:52:30 »
Согласно документации если URL относится к локальной файловой системе (т.е. имеет вид "file://path/to/file"), то он открывается в приложении, определенном для данного типа файлов, в противном случае URL открывается в веб-браузере.
При этом можно переопределить стандартное поведение для нужного типа URL:
Цитировать
The behavior of the openUrl() function can be customized for individual URL schemes to allow applications to override the default handling behavior for certain types of URLs.
The dispatch mechanism allows only one custom handler to be used for each URL scheme; this is set using the setUrlHandler() function. Each handler is implemented as a slot which accepts only a single QUrl argument.
The existing handlers for each scheme can be removed with the unsetUrlHandler() function. This returns the handling behavior for the given scheme to the default behavior.

http://qt-project.org/doc/qt-4.8/QDesktopServices.html


Оффлайн Zeka13

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1177
  • 18.10 Gnome x64 GTX 970
    • Просмотр профиля
Re: Qt gvfs-open: file:ftp://
« Ответ #4 : 13 Октября 2012, 17:57:59 »
всё, на счёт переопределения понял, спасибо, но скорее всего легче и рациональнее будет воспользоваться QProcess, просто придётся для каждого ФМ писать свою команду, благо, что их не очень много
« Последнее редактирование: 13 Октября 2012, 18:00:48 от Zeka13 »
Если Wine - это костыль , то  Punto Switcher - это протез , а Daemon Tools инвалидное кресло.

Оффлайн hippi90

  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
Re: Qt gvfs-open: file:ftp://
« Ответ #5 : 13 Октября 2012, 18:29:40 »
Можно посмотреть как это реализовано в xdg-open и gvfs-open, чтобы определить, какой файловый менеджер стоит по умолчанию.

Оффлайн Zeka13

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1177
  • 18.10 Gnome x64 GTX 970
    • Просмотр профиля
Re: Qt gvfs-open: file:ftp://
« Ответ #6 : 13 Октября 2012, 20:14:24 »
спасибо, отличная идея!
Если Wine - это костыль , то  Punto Switcher - это протез , а Daemon Tools инвалидное кресло.

 

Страница сгенерирована за 0.015 секунд. Запросов: 21.