Jac*_*ieg 3 c++ qt qkeyevent qt5 qkeysequence
是否可以限制QKeySequence只显示一个快捷方式QKeySequenceEdit?目前它最多支持 4 个快捷方式。我的应用程序仅支持一个快捷方式的按键序列,例如Ctrl+Aor Ctrl+C,而不支持例如Ctrl+A, Dor Ctrl+C, X, Z。
是否可以限制QKeySequence或QKeySequenceEdit仅使用一个按键序列?
解决了它,不是最好的解决方案,但很快......如果你想要更多定制的东西,我认为你必须自己构建它......
自定义键序列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)