Работа с потоками в разных версиях 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 наиболее стабильная на сегодняшний день? Может как вариант создавать свои виджеты, а не использовать существующие (но это вроде не логично)?
Вам это нравится? Поделитесь в социальных сетях!
Комментарии
Пожалуйста, авторизуйтесь или зарегистрируйтесь
- Последние комментарии
- AK1 апреля 2025 г. 11:41Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
- VP9 марта 2025 г. 16:14Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
- ИМ22 ноября 2024 г. 21:51Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
- Сейчас обсуждают на форуме
- f15 февраля 2025 г. 13:46Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
- Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
- Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
- Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.