我无法通过QtCreator将快捷方式绑定到QPushButton
。
我所做的是在QDialog
中放置一个按钮,并使用自动连接将clicked()
信号连接到插槽。然后,我在表单编辑器中将属性QAbstractButton::shortcut
设置为 Ctrl + N 。
当我点击按钮时,插槽会被触发,但是当我按下快捷键时,没有任何反应。
以下是ui文件的代码:
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>PushButton</string>
</property>
<property name="shortcut">
<string>Ctrl+N</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>
这是我的Dialog类的代码(标头和源已合并):
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0) :
QDialog(parent), ui(new Ui::Dialog)
{
ui->setupUi(this);
}
private slots:
void on_pushButton_clicked()
{
qDebug() << "click!";
}
private:
Ui::Dialog *ui;
};
int main(int argc, char* argv[]) {
QApplication app(argc, argv);
Dialog dialog;
dialog.show();
return app.exec();
}
我设法让它在菜单栏中使用了一个动作,我不明白为什么它似乎不起作用。
我使用的是Qt 5.8.0。
答案 0 :(得分:0)
您可能正在开发一个macOS,ControlModifier
对应Command keys
而MetaModifier
对应Control key
对应documented by Qt:< / p>
注意:在macOS上,ControlModifier值对应于Command Macintosh键盘上的键,MetaModifier值对应 到控制键。
QKeySequence
的文档也提供了相关信息:
注意:在macOS上,引用&#34; Ctrl&#34;,Qt :: CTRL,Qt :: Key_Control和 Qt :: ControlModifier对应于Macintosh上的Command键 键盘,以及&#34; Meta&#34;,Qt :: META,Qt :: Key_Meta和 Qt :: MetaModifier对应于Control键。
因此,您应该按Command + N
来触发快捷方式。
答案 1 :(得分:0)
我通过创建一个触发与按钮相同的插槽的菜单栏操作解决了这个问题。
由于快捷方式(仅在我的情况下)仅使用菜单操作,我相信这是一个不错的选择,因为我想要快捷方式的按钮触发了我的应用程序的主要插槽之一。
我做了以下事情:
clicked()
信号连接到操作triggered()
信号