QSplashscreen фон становится черным, когда я нажимаю на него несколько раз
Я использую QSplashscreen
для отображения заставки в моем приложении. Обычно, когда я нажимаю на заставку, когда мое приложение загружается, заставка исчезает. Я видел, что mousepressevent
на Qsplashscreen
сделаны звонить hide
Функция виджета.
Но иногда, когда я нажимаю на заставку, фон заставки становится черным, и если я продолжаю нажимать, я получаю сообщение о том, что приложение не отвечает. Но через некоторое время приложение работает нормально.
Почему я иногда получаю черный фон при щелчке мышью на заставке? Я использую версию Qt 4.8.5
1 ответ
Я тоже столкнулся с этой проблемой, и я нашел, что лучшим решением было отключить QSplashScreen
таким образом, любое взаимодействие с пользователем не вызовет никаких событий.
Я тестировал это на Qt v5.8, но это также должно работать и на v4.8.5.
Причина, по которой вы получаете черный фон и "не отвечающие" сообщения, вероятно, в том, что вашему основному приложению требуется некоторое время для загрузки, что означает, что оно блокирует основной цикл событий. Большинство людей пытаются отключить все события, которые QSplashScreen
реализует, но это решение не работает. Поэтому самое простое решение - позвонить QApplication.processEvents
время от времени, пока вы создаете основное приложение.
Обратите внимание, что вам следует отделить свою бизнес-логику от логики представления именно из-за подобных вещей. Решать подобные проблемы будет намного проще.