首页| 论坛| 消息

标题:关于嵌入式设备上菜单界面的设计问题
作者:jackyjun
日期:2006-05-16 10:31
内容:

我的硬件上不支持鼠标和触摸屏,因此用qt设计菜单的时候,只能考虑用按键来实现菜单的操作。可是我发现QMenubar只支持加速键+快捷键才能弹出菜单,所以考虑使用QPushbutton,然后在QPushbutton里加入QPopupMenu,一旦有键按下,就在某个位置把QPopupMenu弹出来。问题是当我按下按键以后,菜单是弹出来了,可是其他的Qpushmenu就不再响应键盘了。而且,弹出来的菜单就放在那里也回不去了。方法很笨,大家见笑了,请问大家,我怎么样才能让按键想鼠标一样自如的控制菜单呢?
请大家指点了,我的代码如下:
MyMainWindow::MyMainWindow()
{
setGeometry(0,0,320,240);
filebutton = new QPushButton("File",this);
filebutton->setGeometry(0,0,50,30);
file=new QPopupMenu(this);
file->insertItem("New");
file->insertItem("Open");
file->insertSeparator();
file->insertItem("Save");
file->insertItem("Save As");
filebutton->setPopup(file);
setupbutton = new QPushButton("Setup",this);
setupbutton->setGeometry(51,0,50,30);
resultbutton = new QPushButton("Result",this);
resultbutton->setGeometry(102,0,50,30);
displaybutton = new QPushButton("Display",this);
displaybutton->setGeometry(153,0,50,30);

}
void MyMainWindow::keyPressEvent(QKeyEvent*k)
{
switch(tolower(k->ascii()))
{
case 'q':
QApplication::exit();
break;
case 'f':
setupbutton->setDown(false);
&n ..


#1 [shiroki 05-16 17:42]
“问题是当我按下按键以后,菜单是弹出来了,可是其他的Qpushmenu就不再响应键盘了。”
你说的这个是正常的现象,因为popupmenu弹出来以后它是focus widget, 所有的键盘事件都会传给它
但是你说的菜单弹出来以后就hide不了, 这应该不会吧,在你选了菜单的某项的时候菜单就会hide了。
另外, 如果要实现点一个硬件的按钮让popupmenu hide, 我觉得应该在popupmenu里响应这个按键值hide自己, 这应该是最简单的实现方式。
#2 [jackyjun 05-17 13:34]
谢谢版主,问题已经解决了!在Popupmenu 里响应keyPressEvent就可以了

回复 发表
主题 版块