C++ 为按钮指定快捷键-Qt C++;
我已经使用Qt Creator创建了一个GUI。这是通过拖放小部件实现的。现在我想为所有按钮指定快捷键。这里有人能告诉我怎么做吗?提前谢谢。您的按钮可能有一个插槽连接到其C++ 为按钮指定快捷键-Qt C++;,c++,qt,C++,Qt,我已经使用Qt Creator创建了一个GUI。这是通过拖放小部件实现的。现在我想为所有按钮指定快捷键。这里有人能告诉我怎么做吗?提前谢谢。您的按钮可能有一个插槽连接到其clicked()信号 要添加快捷键,只需将快捷键的activated()信号连接到同一插槽即可 在您的代码中,#include,然后您将能够为如下插槽添加快捷键: QShortcut *shortcut = new QShortcut(QKeySequence("Ctrl+O"), parent); QObject::conn
clicked()
信号
要添加快捷键,只需将快捷键的activated()
信号连接到同一插槽即可
在您的代码中,#include
,然后您将能够为如下插槽添加快捷键:
QShortcut *shortcut = new QShortcut(QKeySequence("Ctrl+O"), parent);
QObject::connect(shortcut, SIGNAL(activated()), receiver, SLOT(yourSlotHere()));
其中parent是快捷方式(例如主窗口)的父级,yourSlotHere()
是要快捷方式调用的插槽的名称,receiver
是yourSlotHere()
所在的对象
将“Ctrl+O”
替换为要指定的任何快捷方式
您还可以在文档页面上找到有关的详细信息。或者,如果快捷键对应于按钮文本中的某个字符,您可以为该字符准备(&p)。如果您想要文字&,请立即使用&。(Qt5.7),我们可以使用快捷方式属性在Qt Designer中直接指定快捷方式: 非常方便。。即使有点问题:在切换到另一个小部件之前,我必须通过单击同一小部件的另一个属性来“验证”快捷方式
但是它是有效的。从良好的UI/UX角度来看,您实际上想要的不仅仅是触发按钮触发的同一个插槽(这是公认答案建议的解决方案),而且您还想要直观地设置按钮被按下的动画,以确保用户能够清楚地在视觉上注意到被触发的动作。下面是我在“确认”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,我认为这是最好的答案。否则,您可以像另一个答案所建议的那样轻松地在设计器中设置快捷键。我们是不是泄漏了
快捷键
对象,还是因为我们指定了父对象而将其释放?如果要绑定到特殊键,请使用QKeySequence(Qt::key\u Home)
或其他(key\u Backspace
,key\u Right
等)。