将 QKeySequence/QKeySequenceEdit 限制为只有一个快捷方式

Jac*_*ieg 3 c++ qt qkeyevent qt5 qkeysequence

是否可以限制QKeySequence只显示一个快捷方式QKeySequenceEdit?目前它最多支持 4 个快捷方式。我的应用程序仅支持一个快捷方式的按键序列,例如Ctrl+Aor Ctrl+C,而不支持例如Ctrl+A, Dor Ctrl+C, X, Z

是否可以限制QKeySequenceQKeySequenceEdit仅使用一个按键序列?

Jac*_*ieg 5

解决了它,不是最好的解决方案,但很快......如果你想要更多定制的东西,我认为你必须自己构建它......

自定义键序列edit.h

#ifndef CUSTOMKEYSEQUENCEEDIT_H
#define CUSTOMKEYSEQUENCEEDIT_H

#include <QKeySequenceEdit>

class QKeyEvent;

class CustomKeySequenceEdit : public QKeySequenceEdit
{
    Q_OBJECT

public:
    explicit CustomKeySequenceEdit(QWidget *parent = 0);
    ~CustomKeySequenceEdit();

protected:
    void keyPressEvent(QKeyEvent *pEvent);
};

#endif // CUSTOMKEYSEQUENCEEDIT_H
Run Code Online (Sandbox Code Playgroud)

自定义键序列edit.cpp

#include "customkeysequenceedit.h"

#include <QKeyEvent>

CustomKeySequenceEdit::CustomKeySequenceEdit(QWidget *parent) : QKeySequenceEdit(parent) { }

CustomKeySequenceEdit::~CustomKeySequenceEdit() { }

void CustomKeySequenceEdit::keyPressEvent(QKeyEvent *pEvent)
{
    QKeySequenceEdit::keyPressEvent(pEvent);

    QKeySequence seq(QKeySequence::fromString(keySequence().toString().split(", ").first()));
    setKeySequence(seq);

}
Run Code Online (Sandbox Code Playgroud)