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

Qt键盘响应有关问题

2013-07-04 
Qt键盘响应问题现在想在界面上实现功能:点击快捷键(比如字母“W”)将焦点定位到指定的widget,结果实现上遇到

Qt键盘响应问题
现在想在界面上实现功能:点击快捷键(比如字母“W”)将焦点定位到指定的widget,结果实现上遇到了一下问题:
经过尝试发现,只有当焦点在Mainwindow上时,程序才能接受的keyPressEvent响应,如果在鼠标点击了例如tablewidget或者treewidget之后(个人理解是当前焦点不在mainwindow上),再按指定的按键不会有任何反应,请问这个问题怎么解决?谢谢了!


void MainWindow::keyPressEvent(QKeyEvent??*event)
{
????if(event->key()==Qt::Key_W)
????{
???????? treeWidget1->setFocus();
????}
}
Qt
[解决办法]
引用:
为你的widget安装事件过滤器。

+1
但是这个问题比较复杂,你的控件不需要键盘输入还好办。
[解决办法]
引用:
Quote: 引用:

为你的widget安装事件过滤器。

求教事件过滤器是什么?


tablewidget->installEventFilter(this);  //可以放在构造函数


bool XXX::eventFilter(QObject *target, QEvent *event)   
{   
     if (target == tablewidget) 
     {   
         if (event->type() == QEvent::KeyPress) {   
             QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);   
             if (keyEvent->key() == Qt::Key_W) 
             {   
                 //do something...   
                 return true;   
             }   
         }   
     }   
     return QDialog::eventFilter(target, event);   
}  


热点排行