示范如何让QT控件捕捉键盘事件实现快捷键

    扩展QTextEdit,实现类似QQ ctrl+enter 或者msn enter快捷键的效果。
    还是很容易的,需要注意QT中Key_Enter指的是小键盘的回车,Key_Return才是键盘中间的回车。代码如下:

#pragma once

#include <QTextEdit>
#include <QKeyEvent>

class TriggerTextEdit
    : public QTextEdit
{
    Q_OBJECT
public:
    TriggerTextEdit(QWidget* parent)
    : QTextEdit(parent)
    , shortcut(NONE_SHORTCUT)
    {
    }
    enum ShortcutType
    {
        NONE_SHORTCUT = 0,
        ENTER_SHORTCUT = 1,
        CTRL_ENTER_SHORTCUT = 2,
    };
    void setShortcut(ShortcutType shortcut_)
    {
        shortcut = shortcut_;
    }
signals:
    void triggerSignal();
public:
    virtual void keyPressEvent( QKeyEvent * ev )
    {
        if ((shortcut == ENTER_SHORTCUT && (ev->key() == Qt::Key_Return || ev->key() == Qt::Key_Enter))
            || (shortcut == CTRL_ENTER_SHORTCUT && (ev->key() == Qt::Key_Return || ev->key() == Qt::Key_Enter) && ( ev->modifiers() & Qt::ControlModifier )))
        {
            emit triggerSignal();
            ev->accept();
            return;
        }       
        QTextEdit::keyPressEvent(ev);       
    }
private:
    ShortcutType shortcut;
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值