加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2011-03-07 13:54:01)
标签:

qt

控件

键盘事件

快捷键

it

分类: c/cpp
    扩展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;
};


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有