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

标签 c++ qt qt5 qkeyevent qkeysequence

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

是否可以将 QKeySequenceQKeySequenceEdit 限制为仅一个键序列?

最佳答案

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

customkeysequenceedit.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

customkeysequenceedit.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);

}

关于c++ - 将 QKeySequence/QKeySequenceEdit 限制为只有一个快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30006562/

相关文章:

c++ - 在 Qt5 中的 QWidget 中显示 Qt3D 内容

c++ - 如何使用 MsiGetProductInfo 和 MsiOpenDatabase 获取升级代码?

c++ - 在 C++ 中重命名命名空间的一致方法

c++ - 将 Google 的协议(protocol) Buffer 添加到 Qt ;禁用编译器警告

c++ - QGraphicsItem重绘

linux - 在内存 QFile 中使用 fwrite

ios - 在 iOS qbs 项目中包含 AVFoundation

c++ - 从 BST 中删除一个元素(指针错误)

c++ - 如何创建自定义 boost::posix_time to_string 格式化程序?

c++ - 如何在其成员发出信号时发出信号?