首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

怎的把Qt的界面和键盘按键联系起来

2012-11-04 
怎样把Qt的界面和键盘按键联系起来我现在在开发一个项目,需要用按键来调用各个页面,不知道怎么实现[解决办

怎样把Qt的界面和键盘按键联系起来
我现在在开发一个项目,需要用按键来调用各个页面,不知道怎么实现

[解决办法]
快捷键绑定?处理keyevent
[解决办法]
某一个page需要接受键盘事件,就设置 page->grabKeyboard();


C/C++ code
void Button::keyPressEvent(QKeyEvent *event){     if(event->key() == Qt::Key_Home)     {        keypress = true;     }} void Button::keyReleaseEvent(QKeyEvent *event){    if( (event->key() == Qt::Key_Home) && keypress)   //这里定义的是Home 键    {         keyrelease = true;        if( keyrelease && keypress)        {            emit signal_key_pressed();  //发出 Home键按下的信号        }      }      keypress = false;     keyrelease = false;}
[解决办法]
我也好久没用QT了,不过我记得你可以用事件过滤器eventFilter。就是给你的那个类对象安装一个事件过滤器。然后在对象接受到得事件中去处理你想要的按键按下的动作。
#include <qwidget.h>

class MyWidget : public QWidget
{
Q_OBJECT
public:
MyWidget( QWidget *parent = 0, const char *name = 0 );

protected:
bool eventFilter( QObject *, QEvent * );
};

MyWidget::MyWidget( QWidget *parent, const char *name )
: QWidget( parent, name )
{
// 为父对象(如果有的话)安装一个过滤器
if ( parent )
parent->installEventFilter( this );
}

bool MyWidget::eventFilter( QObject *o, QEvent *e )
{
if ( e->type() == QEvent::KeyPress ) {
// 对于键被按下进行特殊处理
QKeyEvent *k = (QKeyEvent *)e;
qDebug( "Ate key press %d", k->key() );//你可以通过k-key和你想要的按键匹配进行处理
return TRUE; } else {
// 标准事件处理
return QWidget::eventFilter( o, e );
}
}

[解决办法]
探讨

我是个初学者,很感谢你的回复啊,想问下,如果按下的键是home键,则会触发一个信号,这样就可以通过沟槽机制,来实现触发了吗

[解决办法]
探讨

我是个初学者,很感谢你的回复啊,想问下,如果按下的键是home键,则会触发一个信号,这样就可以通过沟槽机制,来实现触发了吗

热点排行