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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [решено] Выделение несколько ячеек таблицы с зажатым Ctrl - помогите!  (Прочитано 8224 раз)
daimon
Гость
« : Ноябрь 17, 2009, 12:22 »

Как проверить нажатие Ctrl клавиши в своем слоте?
Код:
void Spreadsheet::keyPressEvent(QKeyEvent *event_)
{
if( QApplication::keyboardModifiers() & Qt::ControlModifier)
setSelectionMode ( QAbstractItemView::MultiSelection );

}
void Spreadsheet::keyReleaseEvent(QKeyEvent *event_)
{

setSelectionMode ( QAbstractItemView::SingleSelection );
}
Можна написать лучше.
« Последнее редактирование: Ноябрь 17, 2009, 17:25 от daimon » Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #1 : Ноябрь 17, 2009, 13:03 »

QApplication::keyboardModifiers() ?
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Павел_F.
Гость
« Ответ #2 : Ноябрь 17, 2009, 13:47 »

Именно! если точнее:
Код:
if( QApplication::keyboardModifiers() == Qt::ControlModifier) printf("YaHoooo!!! Ctrl key is pressed!!!");
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #3 : Ноябрь 17, 2009, 15:06 »

А если еще точнее, то

Код
C++ (Qt)
if( QApplication::keyboardModifiers() & Qt::ControlModifier) printf("YaHoooo!!! Ctrl key is pressed!!!");
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
MoPDoBoPoT
Гость
« Ответ #4 : Ноябрь 17, 2009, 15:12 »

А если еще точнее, то

Код
C++ (Qt)
if( QApplication::keyboardModifiers() & Qt::ControlModifier) printf("YaHoooo!!! Ctrl key is pressed!!!");
+1
Накладываем маску, ибо вместе с Ctrl могут и другие клавиши-модификаторы зажаты.
Записан
Павел_F.
Гость
« Ответ #5 : Ноябрь 17, 2009, 15:23 »

Да, не подумал...
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #6 : Ноябрь 17, 2009, 15:52 »

а почему нельзя воспользоваться стандартными флагами QTreeView и QTableView (ExtendedSelection который). Используется какая-то самописная таблица?
Записан
daimon
Гость
« Ответ #7 : Ноябрь 17, 2009, 15:57 »

а почему нельзя воспользоваться стандартными флагами QTreeView и QTableView (ExtendedSelection который). Используется какая-то самописная таблица?
Да пишу свою таблицу. Зажимая Ctrl должны выделятся любые ячейки, наоборот- только одна, выделение строк и колонок не отменял. Появилась проблема, переопределив методы событий я закрыл события для клавиш стрелок.
Что делать?
« Последнее редактирование: Ноябрь 17, 2009, 16:03 от daimon » Записан
daimon
Гость
« Ответ #8 : Ноябрь 17, 2009, 17:26 »

Извените, что всех побеспокоил нашел в асистанте  setSelectionMode(ExtendedSelection);
Записан
daimon
Гость
« Ответ #9 : Ноябрь 17, 2009, 17:28 »

Извените, что всех побеспокоил нашел в асистанте  setSelectionMode(ExtendedSelection);
setSelection ( const QRect &, QItemSelectionModel::SelectionFlags )
setSelectionBehavior ( QAbstractItemView::SelectionBehavior )
setSelectionMode ( QAbstractItemView::SelectionMode )
Записан
MoPDoBoPoT
Гость
« Ответ #10 : Ноябрь 17, 2009, 17:58 »

Если бы сразу поставил правильно свой вопрос, то быстрей бы получил ответ.
Да и доку надо читать с большим пристрастием Улыбающийся
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #11 : Ноябрь 18, 2009, 14:58 »

а почему нельзя воспользоваться стандартными флагами QTreeView и QTableView (ExtendedSelection который). Используется какая-то самописная таблица?
Да пишу свою таблицу. Зажимая Ctrl должны выделятся любые ячейки, наоборот- только одна, выделение строк и колонок не отменял. Появилась проблема, переопределив методы событий я закрыл события для клавиш стрелок.
Что делать?
Посмотри на реализацию подобной таблицы: http://code.google.com/p/unnstudioreport/
там вроде есть класс обрабатывающий выделения. Вроде даже работает.
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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