Russian Qt Forum

Qt => Model-View (MV) => Тема начата: Serega от Апрель 05, 2015, 11:51



Название: QTreeView + QFileSystemModel - запрет редактирования имени файла
Отправлено: Serega от Апрель 05, 2015, 11:51
В этой модели http://www.prog.org.ru/topic_28581_0.html пользователь может отредактировать имя файла.
Но стоит задача запретить редактирование определенного имени файла.
Соответственно вопрос. Как это проще сделать?


Название: Re: QTreeView + QFileSystemModel - запрет редактирования имени файла
Отправлено: Serega от Апрель 06, 2015, 07:00
Ok!
Решаем задачу подобным образом. Ставим, что то вроде фильтра на двойное нажатие клавиши мыши, прежде чем позволяем пользователю редактировать имя файла:
Код
C++ (Qt)
 connect( m_managerView, SIGNAL( doubleClicked( QModelIndex ) ),
          this, SLOT( editName( QModelIndex ) ) );
 
...
...
 
void managerWidget::editName(const QModelIndex &index)
{
 QString generalName = m_managerModel->rootPath() + "/general.txt";
 
 if(!index.isValid())
 {
   return;
 }
  else if(m_managerModel->filePath(index) == generalName )
 {
   m_managerModel->setReadOnly( true );
   return;
 }
 
 m_managerModel->setReadOnly( false );
 m_managerView->edit(index);
}



Попутный вопрос.
Работаю на виртуальной машине VMware.
Имеется такая проблема: При двойном нажатии левой клавиши мыши на имени файла для редактирования, часто имя затирается и устанавливается 0.
С чем это может быть связано с VMware или кодом?
Как бы это исправить?


И еще вопрос. Необходимо что бы смена пункта дерева происходила только при щелчке левой кнопки мыши. Как отцепить колесико и правую кнопку мыши, которая должна показывать только контекстное меню для текущего итема, но не инициировать переход на него?


Название: Re: QTreeView + QFileSystemModel - запрет редактирования имени файла
Отправлено: Авварон от Апрель 06, 2015, 23:59
Смотрите QAIM::flags (http://doc.qt.io/qt-5/qabstractitemmodel.html#flags)


Название: Re: QTreeView + QFileSystemModel - запрет редактирования имени файла
Отправлено: Serega от Апрель 07, 2015, 19:23
Смотрите QAIM::flags (http://doc.qt.io/qt-5/qabstractitemmodel.html#flags)
Спасибо! К сожалению ничего не понял. Подобных флагов там вроде нет.
Однако есть флаги Qt::MouseButtons, но как их применить в данном случае? Ладно постараюсь разобраться.

А вот есть ли какие либо соображения, почему при двойном клике мыши для редактирования имени файла или папки, выделение часто тут же заменяется на 0? Как с этим боротбся? Или эта проблема не типична и просто связана с тем, что я работаю на виртуальной машине?