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

    示例

    #include 
    #include 
    #include 
    
    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());
            }
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    #include 
    #include "mainwindow.h"
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
    
        MainWindow w;
        w.show();
    
        return a.exec();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    结果

    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    注意,2022年CCF会士评选结果揭晓
    IT基础设施管理
    php lcg_value与mt_rand生成0~1随机小数的效果比较
    ARMv8函数传参中的bug!
    Go语言 | 02 for循环及常用函数的使用
    springcloud+nacos+feign+gateway构建微服务
    贴片排阻的基本原理和应用
    bitset的学习笔记
    MatrixOne 支持多样化生态工具
    【问题记录】解决Git上传文件到GitHub时收到 “GH001: Large files detected” 错误信息!
  • 原文地址:https://blog.csdn.net/MrHHHHHH/article/details/134085774