示范如何让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
赠金笔
加载中,请稍候......