【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();
}

结果


相关推荐
2601_949146533 小时前
C语言语音通知接口接入教程:如何使用C语言直接调用语音预警API
c语言·开发语言
曹牧3 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
KYGALYX3 小时前
服务异步通信
开发语言·后端·微服务·ruby
zmzb01034 小时前
C++课后习题训练记录Day98
开发语言·c++
猫头虎4 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
YUJIANYUE5 小时前
PHP纹路验证码
开发语言·php
仟濹5 小时前
【Java基础】多态 | 打卡day2
java·开发语言
孞㐑¥5 小时前
算法——BFS
开发语言·c++·经验分享·笔记·算法
Re.不晚5 小时前
JAVA进阶之路——无奖问答挑战2
java·开发语言
八零后琐话5 小时前
干货:程序员必备性能分析工具——Arthas火焰图
开发语言·python