为按钮指定快捷键- Qt C++

gpfsuwkq  于 2022-11-27  发布在  其他
关注(0)|答案(5)|浏览(168)

我已经用Qt Creator创建了一个图形用户界面。这是通过拖放小部件。现在我想为所有的按钮分配快捷键。这里的任何人都可以告诉我如何做吗?提前谢谢你。

hgb9j2n6

hgb9j2n61#

你的按钮可能有一个插槽连接到他们的clicked()信号。
要添加快捷键,只需将快捷键的activated()信号连接到同一插槽。
在您的代码中,#include <QShortcut>,然后您将能够为插槽添加一个快捷键,如下所示:

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

其中parent是快捷方式的父项(例如主窗口),yourSlotHere()是希望快捷方式调用的插槽的名称,receiveryourSlotHere()所在的对象。
"Ctrl+O"替换为要指定的任意快捷键。
您还可以在QShortcut的文档页面上找到更多信息。

vuktfyat

vuktfyat2#

或者,如果快捷键Map到按钮文字中的某个字符,您可以在该字符前加上&。如果您想要文字&,请使用&&。

k3bvogb1

k3bvogb13#

现在(Qt5.7),我们可以使用 shortcut 属性直接在Qt Designer中分配快捷键:

非常方便..即使有点问题:在切换到另一个小部件之前,我必须通过单击同一小部件的另一个属性来“验证”快捷方式!
但这很管用。

vbopmzt1

vbopmzt14#

从一个好的UI/UX的Angular 来看,你实际上想要的不仅仅是触发与按钮触发相同的插槽(这是被接受的答案所建议的解决方案),而且你还想要在视觉上动画化被按下的按钮,以确保用户可以清楚地在视觉上注意到被触发的动作。下面是我在“confirm”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。否则,你可以设置快捷方式在设计器中很容易作为另一个答案建议。

pokxtpni

pokxtpni5#

btnOpen = new QPushButton(tr("Open"));
btnOpen->setStatusTip(tr("Open file"));
btnOpen->setShortcut(QKeySequence("Ctrl+O"));

相关问题