Это лучший ответ, если вы не используете QtDesigner. В противном случае вы можете легко установить ярлыки в конструкторе, как предлагает другой ответ.

дал графический интерфейс с использованием Qt Creator. Это путем перетаскивания виджетов. Теперь я хочу назначить сочетания клавиш для всех кнопок. Может кто-нибудь здесь, пожалуйста, дайте мне знать, как это сделать? Заранее спасибо.

Ответы на вопрос(4)

то, что вы на самом деле хотите, это не просто запускать тот же слот, что и кнопка триггера (что является решением, предлагаемым в принятом ответе), но вы также хотите визуально анимировать нажатую кнопку, чтобы сделать Убедитесь, что пользователь четко может визуально заметить инициируемое действие. Вот что я использую, например, для подтвержденияQPushButtons.

// I have this function in my 'utils' module.
void bindShortcut(QAbstractButton *button, const QKeySequence &shortcut)  
{
    QObject::connect(new QShortcut(shortcut, button), &QShortcut::activated, [button](){ button->animateClick(); });
}

// and then I use it like this
auto *confirmButton = new QPushButton(tr("Confirm"));
connect(confirmButton, &QPushButton::clicked, ... some slot of yours to do the actual work);
bindShortcut(confirmButton, Qt::Key_Enter);
bindShortcut(confirmButton, Qt::Key_Return);

Это лучший ответ, если вы не используете QtDesigner. В противном случае вы можете легко установить ярлыки в конструкторе, как предлагает другой ответ.

если сочетание клавиш соответствует некоторому символу в тексте кнопки, вы можете подготовить & к этому символу. Если вам нужен литерал &, используйте &&.

используясокращенный свойство:

Очень удобно ... Даже если немного глючит: мне нужно «проверить» ярлык, щелкнув другое свойство того же виджета, прежде чем переключаться на другой виджет!

Но это работает.

Решение Вопроса

clicked() сигнал.

Чтобы добавить сочетания клавиш, вы просто подключаете сочетания клавишactivated() сигнал в тот же слот.

В вашем коде#include <QShortcut> и тогда вы сможете добавить сочетание клавиш для слота, как это:

QShortcut *shortcut = new QShortcut(QKeySequence("Ctrl+O"), parent);
QObject::connect(shortcut, SIGNAL(activated()), receiver, SLOT(yourSlotHere()));

Где parent является родителем вашего ярлыка (например, главное окно),yourSlotHere() имя слота, для которого вы хотите вызвать ярлык, иreceiver объект гдеyourSlotHere() является.

замещать"Ctrl+O" с любым ярлыком, который вы хотите назначить.

Вы также можете найти больше информации на странице документации дляQShortcut.

 Niklas15 апр. 2015 г., 21:02
Разве мы не протекаемshortcut объект или он освобождается, так как мы указываем родителя?
 Tomasz Gandor12 июн. 2018 г., 06:46
Если вы хотите привязать к специальному ключу, используйтеQKeySequence(Qt::Key_Home) или другие (Key_Backspace, Key_Right и т.д.).

Ваш ответ на вопрос