【Qt之控件QKeySequenceEdit】分析及使用

描述

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(): 清除当前的键序列。

示例

cpp 复制代码
#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());
        }
    }
};
cpp 复制代码
#include <QApplication>
#include "mainwindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    MainWindow w;
    w.show();

    return a.exec();
}

结果


相关推荐
侃侃_天下2 天前
最终的信号类
开发语言·c++·算法
echoarts3 天前
Rayon Rust中的数据并行库入门教程
开发语言·其他·算法·rust
Aomnitrix3 天前
知识管理新范式——cpolar+Wiki.js打造企业级分布式知识库
开发语言·javascript·分布式
每天回答3个问题3 天前
UE5C++编译遇到MSB3073
开发语言·c++·ue5
伍哥的传说3 天前
Vite Plugin PWA – 零配置构建现代渐进式Web应用
开发语言·前端·javascript·web app·pwa·service worker·workbox
小莞尔3 天前
【51单片机】【protues仿真】 基于51单片机八路抢答器系统
c语言·开发语言·单片机·嵌入式硬件·51单片机
我是菜鸟0713号3 天前
Qt 中 OPC UA 通讯实战
开发语言·qt
JCBP_3 天前
QT(4)
开发语言·汇编·c++·qt·算法
Brookty3 天前
【JavaEE】线程安全-内存可见性、指令全排序
java·开发语言·后端·java-ee·线程安全·内存可见性·指令重排序
百锦再3 天前
[特殊字符] Python在CentOS系统执行深度指南
开发语言·python·plotly·django·centos·virtualenv·pygame