+class PreventFocusWhileHidden : public QObject
+{
+public:
+ PreventFocusWhileHidden(QObject *parent)
+ : QObject(parent){};
+
+protected:
+ bool eventFilter(QObject *obj, QEvent *ev) override
+ {
+ switch (ev->type()) {
+ case QEvent::Hide:
+ static_cast<QWidget *>(obj)->setFocusPolicy(Qt::NoFocus);
+ return false;
+ case QEvent::Show:
+ static_cast<QWidget *>(obj)->setFocusPolicy(Qt::TabFocus);
+ return false;
+ default:
+ return false;
+ }
+ };
+};
+