当前位置: 代码迷 >> QT开发 >> QFileDialog Escape事件【XXX杀人事件。】,该怎么解决
  详细解决方案

QFileDialog Escape事件【XXX杀人事件。】,该怎么解决

热度:308   发布时间:2016-04-25 05:06:04.0
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。
  相关解决方案