• 【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

    结果

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

  • 相关阅读:
    前缀树的设计与实现
    torch搭建神经网络(三)
    Java Thread.interrupt()方法具有什么功能呢?
    组内再分组汇总并取前 N 名后合并
    前端相关免查整合-vue、es、工具类等
    【shell】$# 获取函数参数
    vue进阶04-vue文档生成工具vuepress2
    来自阿里P8互联网面试官的夺命连环60问,Git命令面试简直是教科式天花板
    【mia】服务管理流程
    尚硅谷尚品项目汇笔记(三)
  • 原文地址:https://blog.csdn.net/MrHHHHHH/article/details/134085774