需要把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。