• 4501阅读
  • 5回复

[提问]Qt键盘响应问题 [复制链接]

上一主题 下一主题
离线horizonm
 

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


  1. void MainWindow::keyPressEvent(QKeyEvent  *event)
  2. {
  3.     if(event->key()==Qt::Key_W)
  4.     {
  5.          treeWidget1->setFocus();
  6.     }
  7. }


离线XChinux

只看该作者 1楼 发表于: 2013-06-28
你试试QSortcut能否解决问题?parent为mainwindow
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线jdwx

只看该作者 2楼 发表于: 2013-06-28
如果treewidget为可编辑的就比较麻烦,要区分是按下快捷键还是输入文本。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线horizonm

只看该作者 3楼 发表于: 2013-06-28
回 2楼(jdwx) 的帖子
不是可编辑的,是勾选的。
离线jdwx

只看该作者 4楼 发表于: 2013-06-28
回 3楼(horizonm) 的帖子
给treeWidget安装事件监视器.
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线horizonm

只看该作者 5楼 发表于: 2013-07-02
回 1楼(XChinux) 的帖子
谢谢,已解决。代码
  1. QShortcut  *newShortCut= new QShortcut(QKeySequence(tr("F1")), this);
  2.     connect(newShortCut,SIGNAL(activated ()),tableWidget,SLOT(setFocus()));


快速回复
限100 字节
 
上一个 下一个