Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 26.10.2016
Сообщений: 8
1

Не могу вызвать hotkey для QTableView из-за аналогичных hotkey в QAction в меню

27.11.2017, 18:16. Показов 1700. Ответов 6
Метки qt (Все метки)

Author24 — интернет-сервис помощи студентам
У меня есть наследник QMainWindow со своим меню. Меню имеет горячие клавиши. У MainWindow есть QDockWidget которые имеет CustomTableView. Хочется при выделении ячейки копировать ещё содержимое в буфер. Однако тут я столкнулся с проблемой.

QEvent приходит в CustomTableView уже без нужных флагов и копирование внутри keyPressEvent не проходит
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
void CustomTableView::keyPressEvent(QKeyEvent *event)
{
 
    if (event->matches(QKeySequence::Copy)){
        auto cindex = currentIndex();
        auto text = cindex.data(Qt::DisplayRole).toString();
        QApplication::clipboard()->setText(text);
    }
 
        QTableView::keyPressEvent(event);
}
QAction перехватывает событие раньше. Попытка отловить в QApplication::notify() или установить eventFilter в MainWidow на док виджет в который помещен CustomTableView эффекта не дали...
Пытался реализовать что-то наподобие https://bugreports.qt.io/browse/QTBUG-47494 для QApplication::notify()
но в итоге всех попыток CustomTableView::keyPressEvent либо не вызывался вообще, либо проверка на QKeySequence::Copy не проходила.

Может кто-нибудь сможет показать на примере как разрешить эту ситуацию, буду очень благодарен.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2017, 18:16
Ответы с готовыми решениями:

Глобальный HotKey для вызова меню программы
Все привет)Хоть тема пройдена но, есть вопрос нужно сделать - Горячую клавишу для вызова меню...

HotKey для button, как?
Помогите к кнопке добавить HOTKEY. В моей программе нажимаю ссылку меню и появляется форма,...

Поиск информации для написания HotKey
Всем привет, буду рад любой помощи. Мне требуется помощь в поиске информации для написания...

Задать свой hotkey для POST загрузки или загрузчика ОС
Всем привет! Собственно задача стоит такая: обеспечить выполнение определенных действий по...

6
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
27.11.2017, 19:37 2
У меню же с Alt комбинации, а копирование Ctrl.
0
0 / 0 / 0
Регистрация: 26.10.2016
Сообщений: 8
27.11.2017, 19:49  [ТС] 3
В приложении для нескольких виджетов эта проблема. Нужно чтобы их Ctrl + C работал когда они в фокусе. Да и пользователю удобнее копировать на это сочетание. И меню сложное, это не QMenu.
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
27.11.2017, 20:05 4
Цитата Сообщение от Klerfe Посмотреть сообщение
Нужно чтобы их Ctrl + C работал когда они в фокусе.
Так и происходит. Что ты сделал, что у тебя перестало?
0
0 / 0 / 0
Регистрация: 26.10.2016
Сообщений: 8
28.11.2017, 11:55  [ТС] 5
Вот простой пример. Сейчас если выделить ячейку и нажать Ctrl + C то ничего не скопируется. Но если в ui файле убрать с меню горячую клавишу, то всё заработает. Данный пример, конечно, урезанный, но если добавить туда ещё пару окон, виджетов и прочего, которые сами не обрабатывают нажатия клавиш и для них подойдёт горячая клавиша с меню, а для пары виджетов с особым поведением нужен свой обработчик. А он не работает...
0
0 / 0 / 0
Регистрация: 26.10.2016
Сообщений: 8
28.11.2017, 11:57  [ТС] 6
Извеняюсь, не добавил сразу
Вложения
Тип файла: zip HotkeyOverloadTrouble.zip (2.24 Мб, 5 просмотров)
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
28.11.2017, 13:59 7
Лучший ответ Сообщение было отмечено Wyn как решение

Решение

Делай как в стандартной реализации - если есть какой-то виджет, которому нужно копирование, то пусть он сам и обрабатывает эту комбинацию, а не QAction.
0
28.11.2017, 13:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.11.2017, 13:59
Помогаю со студенческими работами здесь

Hotkey
В альфаскинс не было THotkey, решил кинуть стандартный - свойства фонт нет, что?! Сейчас бы в 2076,...

HotKey
Регистрирую горячие клавиши с помощью RegisterHotKey, потом ловлю их с помощью...

HotKey
Пишу скриншотер, и возник вопрос как сделать хоткей не кнопку (BitBtn1). Гуглил, ничего путного не...

DEL Hotkey
У меня в программе есть меню, в котором один из пунктов вызывается нажатием на DEL (hotkey) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru