QWidget установить фокус на шоу и скрыть потерянный фокус? - PullRequest
0 голосов
/ 27 апреля 2019

У меня есть пользовательский QComboBox с QTreeView, который я хотел бы показать, когда пользователь нажимает стрелку раскрывающегося списка, чтобы отобразить параметры комбинирования.

Я заменил вызов QComboBox :: showPopup, показывая дерево в правильном месте.

Я также установил эти параметры в дереве:

    mView_tree->setFocusPolicy(Qt::StrongFocus);
    mView_tree->setFrameShape(QFrame::NoFrame);
    mView_tree->setWindowFlags(Qt::Tool | Qt::CustomizeWindowHint);

А я покажу Popup:

... some code
mView_tree->move(loc);
mView_tree->show();
mView_tree->setFocus(Qt::MouseFocusReason);

Когда дерево появляется, оно не имеет фокуса. Как мне заставить его правильно сфокусироваться?

Я также попробовал это в случае, если некоторые сигналы QComboBox нарушают работу - в нижней части функции showPopup.

    QMetaObject::invokeMethod(mView_tree, [=]() { mView_tree->setFocus(); }, Qt::QueuedConnection);

К сожалению, не повезло, любая информация / помощь?

ТИА

...