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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как задать шорткат (shortcut) для кнопки в QDialogButtonBox?  (Прочитано 4625 раз)
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« : Декабрь 22, 2013, 19:34 »

Решил после долгого перерыва вернуться к Qt. Многое подзабыл.

Сейчас споткнулся о такой вопрос.

Требуется задать шорткат (сочетание клавиш) для кнопки OK в диалоге QDialogButtonBox. Конкретно, требуется навесить сочетание Ctrl+Enter на стандартную кнопку OK.

Вопрос: как это сделать?

Диалог создается так:

Код:
// Кнопки OK и Cancel
buttonBox=new QDialogButtonBox();
buttonBox->setOrientation(Qt::Horizontal);
buttonBox->setStandardButtons(QDialogButtonBox::Ok|QDialogButtonBox::NoButton|QDialogButtonBox::Cancel);

Стандартных средств для назначения шортката для стандартных кнопок QDialogButtonBox не нашел. У буржев нашел только намёки, что надо как-то использовать QAbstractButton, но не понял что они конкретно имеют в виду.
Записан

Собираю информацию по крупицам
http://webhamster.ru
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #1 : Декабрь 22, 2013, 19:41 »

Получить указатель на нужную кнопку:
QPushButton * QDialogButtonBox::button(StandardButton which) const

Назначить комбинацию:
void   QAbstractButton::setShortcut(const QKeySequence & key)
Записан
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« Ответ #2 : Декабрь 22, 2013, 20:52 »

Получить указатель на нужную кнопку:
QPushButton * QDialogButtonBox::button(StandardButton which) const

Назначить комбинацию:
void   QAbstractButton::setShortcut(const QKeySequence & key)

Так и сделал. Код молча срабатывает, шорткат не работает:

Код:
 // Кнопки OK и Cancel
 buttonBox=new QDialogButtonBox();
 buttonBox->setOrientation(Qt::Horizontal);
 buttonBox->setStandardButtons(QDialogButtonBox::Ok|QDialogButtonBox::NoButton|QDialogButtonBox::Cancel);
 
 // На кнопку OK назначается комбинация клавиш Ctrl+Enter
 QPushButton *OkButton=buttonBox->button(QDialogButtonBox::Ok); // Выясняется указатель на кнопку OK
 OkButton->setShortcut( QKeySequence(Qt::CTRL + Qt::Key_Enter) ); // Устанавливается шорткат
 OkButton->setText("Lalala");

Я даже текст у кнопки OK поменял чтобы видеть, что указатель правильный. Текст на кнопке меняется. А по Ctrl+Enter кнопка не нажимается.
Записан

Собираю информацию по крупицам
http://webhamster.ru
_OLEGator_
Гость
« Ответ #3 : Декабрь 22, 2013, 20:56 »

А Qt::Key_Return?
Записан
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« Ответ #4 : Декабрь 22, 2013, 20:59 »

А Qt::Key_Return?

Ага, увидел. Key_Enter - это Enter на дополнительной (цифровой) клавиатуре.
Записан

Собираю информацию по крупицам
http://webhamster.ru
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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