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

嵌入式Qt非一般功能按键的实现

2013-01-23 
嵌入式Qt特殊功能按键的实现求助,我要做的Qt应用软件是基于嵌入式平台的,界面上有几个特殊的功能按键,在界

嵌入式Qt特殊功能按键的实现
求助,我要做的Qt应用软件是基于嵌入式平台的,界面上有几个特殊的功能按键,在界面的底部,想实现click触发后向上弹出菜单,现在的问题是:没有鼠标、也不是触摸屏,现在不知道该如何实现键盘响应了。
我现在的想法是:当功能键被按下,发送键盘信息给Qt,Qt把它当F1之类的键值处理
void MyMainDialog::keyPressEvent(QKeyEvent *event)
{
switch(event.key())
{
case Qt::Key_F1:
setupBtn_clicked();
break;
case Qt::Key_F2:
....
break;
....
}
}
其中,setupBtn_clicked()函数实现菜单向上弹出,
void MyMainDialog::setupBtn_clicked()
{
QPoint pos;
pos.setX(0);
pos.setY(-setupMenu.sizeHint().height());
setupMenu.exec(ui.setupBtn.mapToGlobal(pos));
}
具体的菜单实现我就不写了。。。
这样做之后,在主机上做了下试验,按下F1,确实会响应,也可以进入上拉菜单进行下一步操作,
但如果按过F1之后,如果再按F2、F3之类的就没有反应了,似乎是焦点一直在F1所在菜单下,无法回到主界面上来,或者切换到其他按键上!!
求各位大神指导,是我思路有问题吗?或者有改进方法,使界面更人性化,甚至可以使得上拉菜单按钮实现按一次弹出,再按一次就收回这种情况,谢谢!
[解决办法]
setupMenu.exec(ui.setupBtn.mapToGlobal(pos));

你执行了这句,就是阻塞了,程序就阻塞在这个地方了,直到你的菜单退出了,程序才会从这个函数返回,所以按下F1之后,程序就阻塞在了那个地方,你后面按F2当然没反应了。
[解决办法]

引用:
那我该怎么做呢。。。想不到方法啊~~
引用:setupMenu.exec(ui.setupBtn.mapToGlobal(pos));

你执行了这句,就是阻塞了,程序就阻塞在这个地方了,直到你的菜单退出了,程序才会从这个函数返回,所以按下F1之后,程序就阻塞在了那个地方,你后面按F2当然没反应了。


可以通过给你的菜单设置快捷键来实现。
[解决办法]
你应该做驱动开发 
[解决办法]
引用:
我试了下设置快捷键,效果和之前一样,至于show,show没法带参数啊!菜单又实现不了了。。。
引用:引用:
貌似直接把 exec 这个改成 show就好了。

你要先把setupMenu改成全局的  或者使用New出来的 然后用show理论上市可行的。
楼主试一下 看看吧。
   ……

那我也没辙。

如果是我:我只能这样做了: 不用菜单了,当按下F1,弹出的是对话框,这样就能实现了,
所以建议楼主把菜单改成对话框好了。
[解决办法]
exec是阻塞的方式
[解决办法]
如果不执行setupMenu.exec(ui.setupBtn.mapToGlobal(pos));

是不是每次都可以响应呢?
[解决办法]
引用:
引用:恩啊。。。我把这句删了,改成打印信息,都可以响应啊
引用:如果不执行setupMenu.exec(ui.setupBtn.mapToGlobal(pos));

是不是每次都可以响应呢?

那肯定就是你那个菜单阻塞了,你可以换成其他方式。比如说用指针然后setupMenu->……

嗯 有道理

热点排行