Russian Qt Forum

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



Название: Запуск приложения из файла менеджера
Отправлено: koldun90 от Июль 01, 2014, 12:32
здравствуйте такой вопросик.
Есть файловая система qfilesystemmodel  представленная в qtreeview.
Вопрос в том что нужно сделать чтобы реализовать при двойном щелчке мышью по определенному типу файлов его открывало приложение(делаю в Linux).
Те грубо говоря чтоб при двойном клике, файл открывался в ассоциированном с этим файлом приложением. Ну пример из винды допустим (txt в блокноте по умолчанию).
Подскажите какие классы нужно для этого использовать?


Название: Re: Запуск приложения из файла менеджера
Отправлено: gil9red от Июль 01, 2014, 13:05
  • От QTreeView  (http://qt-project.org/doc/qt-4.8/qtreeview.html)отлавливаете сигнал void doubleClicked ( const QModelIndex & index ) (http://qt-project.org/doc/qt-4.8/qabstractitemview.html#doubleClicked)
  • В QFileSystemModel  (http://qt-project.org/doc/qt-5/QFileSystemModel.html)используете методы на выбор
    • QFileInfo fileInfo(const QModelIndex & index) const (http://qt-project.org/doc/qt-5/qfilesystemmodel.html#fileInfo)
    • QString filePath(const QModelIndex & index) const (http://qt-project.org/doc/qt-5/qfilesystemmodel.html#filePath)
  • Засовывайте путь к файлу/папке в bool QDesktopServices::openUrl ( const QUrl & url ) (http://qt-project.org/doc/qt-4.8/qdesktopservices.html#openUrl)
  • ...
  • Профит!
:)


Название: Re: Запуск приложения из файла менеджера
Отправлено: koldun90 от Июль 02, 2014, 09:47
собственно начал реализацию метода
вот что получилось

Код:
void MainWindow::on_Treeview_doubleClicked(QModelIndex &index)   //двойнойклик по тривиеву
{
    if (model1->fileInfo(index).isFile();   //если файл
    {
           QString str=model1->fileInfo(index).absoluteFilePatch();  // берем его абсолютный путь
           QDesktopServices::openurl(QUrl(str); //запускаем файл в ассоциированным с ним приложении
     }
}

Вот вроде все нормально работают
txt файлы открываются в редакторе
cpp и ui открываются в qt creator...

возник маленький вопросик
дело в том что когда я кликаю мышкой
по объекту файловой системы(допустим файлу)
то как бы на мгновение происходит активация переименования(те активируется переименование файла на несколько секунд), а потом уже как бы файл запускается в ассоц. с ним приложении так вот вопрос как бы  мне заблокировать переименование файла при двойном клике по объекту(файлу) ?
   



Название: Re: Запуск приложения из файла менеджера
Отправлено: carrygun от Июль 02, 2014, 10:20
Установить нужные флаги (http://qt-project.org/doc/qt-4.8/qabstractitemview.html#EditTrigger-enum) для TreeView.


Название: Re: Запуск приложения из файла менеджера
Отправлено: koldun90 от Июль 02, 2014, 10:42
а какой метод использовать тогда для установки флагов в qtreeview?


Название: Re: Запуск приложения из файла менеджера
Отправлено: gil9red от Июль 02, 2014, 10:48
а какой метод использовать тогда для установки флагов в qtreeview?

Пользуйтесь документацией :)
void setEditTriggers ( EditTriggers triggers ) (http://qt-project.org/doc/qt-4.8/qabstractitemview.html#editTriggers-prop)


Название: Re: Запуск приложения из файла менеджера
Отправлено: koldun90 от Июль 02, 2014, 10:54
да блин я ползуюсь, но там тока editTriggers 2 штуки+ editTrigger