Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: xintrea от Декабрь 22, 2013, 19:34



Название: Как задать шорткат (shortcut) для кнопки в QDialogButtonBox?
Отправлено: xintrea от Декабрь 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, но не понял что они конкретно имеют в виду.


Название: Re: Как задать шорткат (shortcut) для кнопки в QDialogButtonBox?
Отправлено: Old от Декабрь 22, 2013, 19:41
Получить указатель на нужную кнопку:
QPushButton * QDialogButtonBox::button(StandardButton which) const

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


Название: Re: Как задать шорткат (shortcut) для кнопки в QDialogButtonBox?
Отправлено: xintrea от Декабрь 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 кнопка не нажимается.


Название: Re: Как задать шорткат (shortcut) для кнопки в QDialogButtonBox?
Отправлено: _OLEGator_ от Декабрь 22, 2013, 20:56
А Qt::Key_Return?


Название: Re: Как задать шорткат (shortcut) для кнопки в QDialogButtonBox?
Отправлено: xintrea от Декабрь 22, 2013, 20:59
А Qt::Key_Return?

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