描述
QKeySequenceEdit
小部件允许输入一个QKeySequence
。
该小部件允许用户选择一个QKeySequence
,通常用作快捷键。当小部件获取焦点时,录制将开始,并在用户释放最后一个键后的一秒钟结束。
用户可以使用输入键盘来输入键序列。通过调用getKeySequence()
函数可以获取当前输入的键序列,也可以使用setKeySequence()
函数设置/更改键序列。
当键序列发生更改时,QKeySequenceEdit
会发出keySequenceChanged()
信号,可以连接到相应的槽函数进行处理。如果需要清除当前的键序列,可以调用clear()
槽函数。
常用函数
QKeySequence getKeySequence() const
: 获取当前输入的QKeySequence。void setKeySequence(const QKeySequence& keySequence)
: 设置QKeySequenceEdit的当前键序列。
信号
void keySequenceChanged(const QKeySequence& keySequence)
: 当键序列发生更改时发出的信号。void editingFinished()
:当编辑结束时发送信号。
槽
void clear()
: 清除当前的键序列。
示例
#include <QMainWindow>
#include <QKeySequenceEdit>
#include <QMessageBox>class MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr): QMainWindow(parent){QKeySequenceEdit *keySequenceEdit = new QKeySequenceEdit(this);keySequenceEdit->setToolTip("Enter a single key sequence");connect(keySequenceEdit, &QKeySequenceEdit::keySequenceChanged, this, &MainWindow::handleKeySequenceChanged);setCentralWidget(keySequenceEdit);}private slots:void handleKeySequenceChanged(const QKeySequence &keySequence){// 可以在此将快捷键绑定到某动作上if (keySequence.isEmpty()){QMessageBox::information(this, "Shortcut", "Please enter a shortcut.");}else if (keySequence.count() > 1){QMessageBox::information(this, "Shortcut", "Please enter only one key sequence.");}else{QMessageBox::information(this, "Shortcut", "Shortcut changed to: " + keySequence.toString());}}
};
#include <QApplication>
#include "mainwindow.h"int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}
结果