t
Қаң. 14, 2021, 1:35 Т.Ж.

Работа с потоками в разных версиях Qt

Добрый день,
впервые начал проект в котором активно используются потоки и наткнулся на один не очень приятный момент, например:

Существует главный поток (GUI) и созданный поток. Связь между потоками осуществляется с помощью сигналов и слотов.
Так вот, когда основной поток (GUI) принимает данные из потока и отображает их, наводим курсор мышки на какой-нибудь виждет с установленной для него подсказкой (setToolTip), основной поток останавливает обновление GUI и активно начинает выводить подсказку. После вывода подсказки продолжает обновление GUI (при этом поток продолжал работать и данные далее отображаются корректно). Данный эффект замечен не только с подсказкой, но и при наведение на элементы меню.

Данный эффект сильно проявляется в версии Qt 5.14.2 для Windows (в которой я и начал делать свой проект). В версии 5.12.10 для Windows проявляется в значительно меньшей степени. В Linux данный эффект не проявляется в обоих версиях.
Также для нормализации работы потоков в версии 5.14.2 требуется чаще использовать QCoreApplication::processEvents(). Видимо какие-то проблемы с обработкой очереди событий.

Я взял пример из книги Шлее Qt 5.10 и слегка модифицировал, чтобы было видно данный эффект (см.вложение). Эффект хорошо виден в версии 5.14.2, в версии 5.12.10 виден только один раз при первом появлении подсказки. Т.е. проблема оказалась не в моём коде.

Может кто сталкивался с подобным? Как можно это обойти? Какая версия Qt наиболее стабильная на сегодняшний день? Может как вариант создавать свои виджеты, а не использовать существующие (но это вроде не логично)?

ThreadTimer.zip ThreadTimer.zip

1

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

0

Пікірлер

Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
Кіріңіз немесе Тіркеліңіз