读书人

QFileDialog Escape事件【XXX杀人事件

发布时间: 2012-03-24 14:00:46 作者: rapoo

QFileDialog Escape事件【XXX杀人事件。。。】
需要把QFileDialog当做普通控件,一直显示在界面上。不用弹出对话框的方式。

于是 直接使用类QFileDialog,或者继承QFileDialog。然后加入父控件show出来。

现在遇到问题: 当焦点在QFileDialog的时候,按Esc键会导致QFileDialog被隐藏……
(如果QFileDialog是在tabWidget的某个tab里,切换tab再回来又可以看到QFileDialog。。。)

尝试:
1。 在QFileDialog的父控件用eventFilter拦截,结果拦截不到任何按键事件。
QFileDialog也没有accept或者reject。。。就是进了hideEvent()。。。纳闷。。。

2。 看bool QFileDialogPrivate::itemViewKeyboardEvent(QKeyEvent *event)
case Qt::Key_Escape:
q->hide();
return true;
直接hide掉了?肿么办。。。

就算内部私有类把事件处理了,返回true。但是父控件难道不是优先拦截到按键事件吗?

求解。。。


[解决办法]
估计不会有100%的需求将QFileDialog用作控件显示在主界面上,估计你也就是用到一部分,仔细分析分析看看能不能简化程序,有别的控件替换QFileDialog。

读书人网 >QT开发

热点推荐