• 11477阅读
  • 10回复

[提问]Qt mianwindow弹出模式对话框之后,失去焦点,如何响应键盘消息? [复制链接]

上一主题 下一主题
离线acuke
 

只看楼主 倒序阅读 楼主  发表于: 2013-09-11
Qt mianwindow弹出模式对话框之后,点击mainwindow后会失去焦点,我想实现按确认或者取消键,能够实现对话框的关闭?

离线bingyifeng

只看该作者 1楼 发表于: 2013-09-11
1.你可以重写mainwindow的
virtual void  keyPressEvent(QKeyEvent * event)
如果对话框弹出后能收到ESC或EnterKey 则直接在  keyPressEvent 中进行关闭处理。
2.  方法1 不行的话,试试 installevenfilter
重写eventfilter
对esc 和 Enter key 事件进行处理。
<span style="color:blue ">淘宝,绿石斋</span> <a href="http://shop33295817.taobao.com“> <span style="color:blue ">各种水晶饰品,手链,项链 </span></a>
离线acuke

只看该作者 2楼 发表于: 2013-09-11
回 1楼(bingyifeng) 的帖子
方法1,试过了,不好使。在弹出模式对话框的条件下, mainwindow  的 keyPressEvent根本响应不了。
你说的方法2,我也考虑到了,但没用过消息过滤,没想好怎么测。
离线acuke

只看该作者 3楼 发表于: 2013-09-11
采用方法2,把消息过滤安装在对话框中,依然不好使。

求解。。。。
离线jdwx

只看该作者 4楼 发表于: 2013-09-11
回 3楼(acuke) 的帖子
弹出模态对话框之后,还能点主窗口?
能点就不是模态对话框。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线theotherone

只看该作者 5楼 发表于: 2013-09-11
同意4楼
屌丝程序猿,努力更屌丝  
博客:http://fearlazy.com
离线acuke

只看该作者 6楼 发表于: 2013-09-12
回 4楼(jdwx) 的帖子
执行的dlg.exec,不是show。

是模式对话框,点主窗口之后,主窗口是不能操作的,但弹出的对话框也失去了焦点。
这时候我执行按键,没反应,我必须重新点一下弹出的对话框之后才能响应键盘事件。
离线jdwx

只看该作者 7楼 发表于: 2013-09-12
回 6楼(acuke) 的帖子
此现象是不会出现的,随便打开一个文本编辑器,敲几个字,点窗口的x关闭窗口,就会有一个messageBox出来,你点后面的窗口,根本就点不到,焦点还在前面的messageBox上。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线acuke

只看该作者 8楼 发表于: 2013-09-12
回 7楼(jdwx) 的帖子
先说声谢谢,我测试下。
方法1:
QMessageBox::critical(this, "test", "this is test 1"),
消息弹出后,是模态对话框,无法失去焦点。

方法2:
QMessageBox::critical(NULL, "test", "this is tes 2t"),
消息弹出后,也是模态对话框,但弹出后点击其他位置失去焦点。


另外,在fedora平台下,发现使用方式1测试的对话框不在居中位置,并且对话框无法拖曳,使用方法2的对话框可以拖曳但点击失去焦点。
郁闷了。。。。。。。。、
求帮助。。。。。。。。
离线acuke

只看该作者 9楼 发表于: 2013-09-13
求帮助。。。。。。。。
离线acuke

只看该作者 10楼 发表于: 2013-09-30
...
快速回复
限100 字节
 
上一个 下一个