QLabel setText не отображает текст непосредственно перед запуском другого метода - PullRequest
8 голосов
/ 22 декабря 2010

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

self.label.setText(QString("Searching..."))
# method to search directories goes here
self.label.setText(QString("Search Complete"))

Моя проблема в том, что на ярлыке никогда не отображается "Поиск ...".Кажется, что выполнение всегда прыгает прямо, чтобы запустить метод сканирования каталогов, и после завершения метода, который сканирует каталоги, текст метки устанавливается на «Поиск завершен».

Буду признателен, если кто-нибудь сможет объяснить, почему это происходит, или предложить лучший способ решения проблемы.

большое спасибо

Ответы [ 2 ]

23 голосов
/ 22 декабря 2010

Ваш "метод поиска каталогов" блокирует графический интерфейс, поэтому QLabel не может обновлять текст.Вы можете сделать свою процедуру поиска асинхронной или пойти простым путем и заставить QLabel обновлять себя:

self.label.setText(QString("Searching..."))
self.label.repaint()
# method to search directories goes here
self.label.setText(QString("Search Complete"))
1 голос
/ 20 января 2017

Добавить включает:

#include <qapplication.h>

Позвольте Qt обрабатывать события:

self.label.setText(QString("Searching..."))
qApp->processEvents();

Примечание: repaint () не был необходим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...