как изменить графический интерфейс при обработке - PullRequest
3 голосов
/ 07 августа 2011

Я новичок в программировании на Qt, но у меня есть базовые знания на C ++.

Я хочу обновить свой графический интерфейс во время его обработки, пример:

while (....)
{

        do some calculation...

        if (condition fulfill)

            change the color of label.
}

Однако я понимаю, чтоМне не удалось получить желаемый результат (обновить графический интерфейс во время обработки).GUI будет обновляться только после цикла while.Почему это так?Кто-нибудь может помочь?

Кроме того, я хочу «замедлить» изменение цвета, поскольку обработка идет слишком быстро, и я не вижу анимацию.Есть идеи сделать это?

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

Пояснение: На самом деле я хочу обновить GUI , пока Я обрабатываю ... Это означает, что, если у меня есть 100 итераций, после каждая итерация Я хочу обновить графический интерфейс немедленно .

Ответы [ 4 ]

2 голосов
/ 07 августа 2011

Используйте QTimer. Это позволит вам контролировать скорость анимации и поддерживать отзывчивость вашего интерфейса.

1 голос
/ 07 августа 2011

Вам не обязательно нужна нить.
Вызов QApplication :: processEvents () обработает ожидающие события, включая любые перерисовки, которые вы могли вызвать во время обработки.

1 голос
/ 07 августа 2011

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

подробнее здесь:
http://www.qtcentre.org/threads/41545-How-to-refresh-GUI-while-heavy-processing-is-ongoing
http://www.qtcentre.org/threads/32416-Update-GUI-from-another-thread
Принудительное обновление графического интерфейса Qt

0 голосов
/ 07 августа 2011

Если вы хотите анимировать цвет, чтобы указать, что система в данный момент работает, вы можете использовать QApplication :: setOverrideCursor для отображения waitCursor или QProgressDialog вместо этого.

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