描述
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_OBJECT
public:
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();
}
结果