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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: combobox delegate???????  (Прочитано 4788 раз)
tguglanaklona
Гость
« : Октябрь 07, 2010, 17:55 »

Есть QTableWidget tableWidget и делегаты QComboBoxы в нем

где-то там
BoxDelegate pDeleg; //... public: QItemDelegate
... и
tableWidget->setItemDelegateForColumn(n,pDeleg);

и создание QComboBox

QWidget *BoxDelegate::createEditor(QWidget *parent, ... ) const
 {
     QComboBox *editor = new QComboBox(parent);
  ...
}

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

Сообщений: 625


Просмотр профиля WWW
« Ответ #1 : Октябрь 08, 2010, 00:27 »

Цитировать
void QAbstractItemView::mousePressEvent ( QMouseEvent * event )   [virtual protected]
Переопредели эту функцию в потомке tablewidget. Если левая кнопка мыши && индекс под курсором валидный, то вызывать слот edit().

Цитировать
virtual QModelIndex   indexAt ( const QPoint & pos ) const
Сюда передаешь координаты курсора и если возвращаемый индекс валидный, то edit.

Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
tguglanaklona
Гость
« Ответ #2 : Октябрь 08, 2010, 16:05 »

Спасибо! До переопределения додумалась, а на координатах курсора споткнулась)) Хотела туда DblClick отправлять  Крутой
Записан
tguglanaklona
Гость
« Ответ #3 : Октябрь 08, 2010, 16:20 »

Так мне было и лень искать эту QPoint - все попадаешь на первую ячейку.

Все вроде приемлемо решено вот так (без переопределений):

tableWidget->setEditTriggers(QAbstractItemView::AllEditTriggers);
Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #4 : Октябрь 08, 2010, 16:33 »

Цитировать
Все вроде приемлемо решено вот так (без переопределений):

tableWidget->setEditTriggers(QAbstractItemView::AllEditTriggers);
Так там редактирование не только на клик, но и при нажатии на любую клавишу Улыбающийся
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
tguglanaklona
Гость
« Ответ #5 : Октябрь 11, 2010, 09:51 »

Ну как-то так - мне главное, чтобы на один клик, а не на два  Подмигивающий
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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