Russian Qt Forum
Ноябрь 23, 2024, 03:02 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTreeView + QFileSystemModel - запрет редактирования имени файла  (Прочитано 3840 раз)
Serega
Самовар
**
Offline Offline

Сообщений: 127


Просмотр профиля
« : Апрель 05, 2015, 11:51 »

В этой модели http://www.prog.org.ru/topic_28581_0.html пользователь может отредактировать имя файла.
Но стоит задача запретить редактирование определенного имени файла.
Соответственно вопрос. Как это проще сделать?
Записан
Serega
Самовар
**
Offline Offline

Сообщений: 127


Просмотр профиля
« Ответ #1 : Апрель 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 или кодом?
Как бы это исправить?


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

Сообщений: 3260


Просмотр профиля
« Ответ #2 : Апрель 06, 2015, 23:59 »

Смотрите QAIM::flags
Записан
Serega
Самовар
**
Offline Offline

Сообщений: 127


Просмотр профиля
« Ответ #3 : Апрель 07, 2015, 19:23 »

Смотрите QAIM::flags
Спасибо! К сожалению ничего не понял. Подобных флагов там вроде нет.
Однако есть флаги Qt::MouseButtons, но как их применить в данном случае? Ладно постараюсь разобраться.

А вот есть ли какие либо соображения, почему при двойном клике мыши для редактирования имени файла или папки, выделение часто тут же заменяется на 0? Как с этим боротбся? Или эта проблема не типична и просто связана с тем, что я работаю на виртуальной машине?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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