Обходной путь Ошибка Qt Выпадающий список Combobox появляется за окном

Прямо сейчас у меня есть небольшое инструментальное приложение, которое запускается в области значков. Когда я нажимаю на значок, приложение переходит в режим «windowstayontophint». Я добавил поле со списком в этом окне. Но когда я нажимаю в другом месте на рабочем столе, а затем нажимаю поле со списком, раскрывающееся окно переходит в заднюю часть окна. Кажется, это известная ошибка, о которой сообщается здесь:

https://bugreports.qt.io/browse/QTBUG-61804

Есть ли обходной путь для этого? Я использую Qt 5.9.1.

РЕДАКТИРОВАТЬ: добавить код:

Это в конструкторе MainWindow:

Qt::WindowFlags flags = this->windowFlags();
this->setWindowFlags(flags|Qt::WindowStaysOnTopHint);

Затем я помещаю QComboBox в главное окно с предварительно загруженными элементами. При первом нажатии раскрывающийся список появляется сверху, как обычно. Затем я нажимаю на рабочий стол, а затем снова на главное окно и поле со списком. И раскрывающийся список становится в задней части главного окна. Нажмите на ссылку выше, чтобы увидеть, что я имею в виду. Отчет об ошибке также содержит скриншот того, что происходит.


person GeneCode    schedule 20.04.2018    source источник
comment
Я только что попробовал код проверки ошибок в Linux с Qt 5.10.1 и не заметил этой проблемы.   -  person eyllanesc    schedule 20.04.2018
comment
Очень хорошо, я обновлю Qt до последней версии и попробую еще раз. Тай за твой ответ..   -  person GeneCode    schedule 20.04.2018
comment
Переопределить функцию event() для окна и когда e->type() == QEvent::WindowActivate вызвать функцию raise() в поле со списком   -  person Innocent Bystander    schedule 20.04.2018
comment
Должны быть только окна. На Linux и Qt 5.9.1 такого не наблюдаю   -  person Innocent Bystander    schedule 20.04.2018
comment
Некоторый код также был бы хорош для иллюстрации того, что вы пытаетесь сделать.   -  person Innocent Bystander    schedule 20.04.2018
comment
Пробовал функцию повышения(). Кажется, это не работает. Я обновляю вопрос с кодом. Но на самом деле нет никакого кода для создания этой ошибки.   -  person GeneCode    schedule 20.04.2018
comment
Qt 5.10.1 Windows 10 Mingw32 работает хорошо.   -  person JustWe    schedule 20.04.2018
comment
Просто перейдите по повторяющимся ссылкам багтрекера на bugreports.qt.io/browse/QTBUG-62004 показывает, что это влияет только на окна и что это было исправлено в Qt 5.9.2   -  person Felix    schedule 20.04.2018
comment
Хм... хорошо, я обновил Qt 5.9.1 с помощью Maintenance Tool. В окне «О программе Qt Creator» отображается Qt Creator 4.6.0, основанный на Qt 5.10.1 (MVSC 2015, 32-разрядная версия), но когда я запускаю приложение, та же проблема все еще возникает. Хз, что еще теперь делать.   -  person GeneCode    schedule 23.04.2018
comment
Вы действительно создали свое приложение с новой версией Qt? Глядя на окно о Qt Creator, вы видите только то, как это было построено, а не ваше собственное приложение. Посмотрите на параметры сборки и наборы при компиляции вашего приложения.   -  person xander    schedule 23.04.2018
comment
@xander Да, я сделал. После завершения обновления Qt я перезагрузил свой ноутбук и выбрал Build->Build All. Затем запустите его. Но как я вижу в Kits, вроде указывает на папку 5.9.1. А папки 5.10.1 нет. Думаю, мне нужно удалить все и переустановить 5.10.1. Кажется, инструмент обслуживания не работает должным образом.   -  person GeneCode    schedule 23.04.2018
comment
Если у вас нет комплекта для 5.10, вы можете установить его с помощью инструмента обслуживания, по умолчанию он обновляет только некоторые вещи, но должны быть доступны дополнительные версии.   -  person xander    schedule 23.04.2018
comment
@xander, я снова пробую инструмент обслуживания и выбираю опцию «Добавить/удалить». Есть возможность выбрать Qt 5.10.1, но если я проверю все, получится очень много 38,2 ГБ. Каковы основные параметры в Qt5.10.1?   -  person GeneCode    schedule 23.04.2018
comment
Я выбираю, MSVC2017 64-бит, MinGW 5.3.0 32-бит и исходники, должно быть достаточно?   -  person GeneCode    schedule 23.04.2018
comment
Это зависит от того, что вам нужно, я думаю, что источники не являются обязательными, и вам обычно нужна только одна настройка компилятора (либо MSVC, либо MInGW).   -  person xander    schedule 23.04.2018
comment
@xander..... спасибо за ваши комментарии. если вы добавите ответ, я приму его. теперь работает нормально. спасибо!!!!!   -  person GeneCode    schedule 23.04.2018


Ответы (1)


Никто не хочет ставить ответ, поэтому я отвечаю на это сам.

ОТВЕТ: Обновите до последней версии Qt.

У меня это не сработало, потому что у меня были проблемы с обновлением (нуб здесь). В основном произошло то, что при выборе опции «Обновить» в средстве обслуживания SDK не обновляется с 5.9.1 до 5.10.1. Он обновляет только определенные вещи, такие как Qt Creator.

Мне нужно было выбрать «Добавить или удалить компоненты», а затем добавить Qt 5.10.1, но только проверить только MinGW 32bit. (Снимите все остальные, иначе они вам нужны (например, Android или другие)).

Даже после этого вам также необходимо вручную загрузить CMake (получить его с cmake.com) и установить его в «Управление наборами» в Qt Creator.

person GeneCode    schedule 24.04.2018