// 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);
5条答案
按热度按时间hgb9j2n61#
你的按钮可能有一个插槽连接到他们的
clicked()
信号。要添加快捷键,只需将快捷键的
activated()
信号连接到同一插槽。在您的代码中,
#include <QShortcut>
,然后您将能够为插槽添加一个快捷键,如下所示:其中parent是快捷方式的父项(例如主窗口),
yourSlotHere()
是希望快捷方式调用的插槽的名称,receiver
是yourSlotHere()
所在的对象。将
"Ctrl+O"
替换为要指定的任意快捷键。您还可以在QShortcut的文档页面上找到更多信息。
vuktfyat2#
或者,如果快捷键Map到按钮文字中的某个字符,您可以在该字符前加上&。如果您想要文字&,请使用&&。
k3bvogb13#
现在(Qt5.7),我们可以使用 shortcut 属性直接在Qt Designer中分配快捷键:
非常方便..即使有点问题:在切换到另一个小部件之前,我必须通过单击同一小部件的另一个属性来“验证”快捷方式!
但这很管用。
vbopmzt14#
从一个好的UI/UX的Angular 来看,你实际上想要的不仅仅是触发与按钮触发相同的插槽(这是被接受的答案所建议的解决方案),而且你还想要在视觉上动画化被按下的按钮,以确保用户可以清楚地在视觉上注意到被触发的动作。下面是我在“confirm”
QPushButtons
中使用的例子。这是我认为最好的答案,如果你不是使用QtDesigner。否则,你可以设置快捷方式在设计器中很容易作为另一个答案建议。
pokxtpni5#