Рекурсивный перебор + QLabel |
Здравствуйте, гость ( Вход | Регистрация )
Рекурсивный перебор + QLabel |
breeve |
25.1.2011, 20:43
Сообщение
#1
|
Участник Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: 1 |
Есть рекурсивная функция которая увеличивает переменную. Эта переменная в течении секунд 10-15 увеличивается, затем остается неизменной.
Необходимо чтобы эта переменная выводилась в лэйбл все время, т.е пока функция подсчитывает, видеть какое сейчас значение. Я сделал чтобы при запуске функции он выставлял значение в лэйбл, но он меняет так быстро что окно не появляется пока функция не закончит работу. Как сделать чтобы окно открылось а в нем изменялось число? Сообщение отредактировал breeve - 25.1.2011, 20:45 |
|
|
Rocky |
26.1.2011, 8:58
Сообщение
#2
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
Ну можно попробовать поставить задержку (через таймер) на начало работы функции, чтобы успело все отразиться, а потом из функции делать вызов qApp->processEvents().
|
|
|
abc |
27.1.2011, 14:00
Сообщение
#3
|
Участник Группа: Участник Сообщений: 221 Регистрация: 16.12.2010 Из: СПб Пользователь №: 2272 Спасибо сказали: 26 раз(а) Репутация: 4 |
попробуй при каждой итерации:
qlabel->repaint() |
|
|
breeve |
27.1.2011, 15:20
Сообщение
#4
|
Участник Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: 1 |
Ничего не получается.
Как я понял дело не во времени, сделал условие чтобы выводил когда число кратно 1000 т.е ну это примерно раз в 1-2 сек. Он все равно не выводит. Причем ту переменную которая не меняется он выводит, а которые меняються нет. Думаю попробовать через QThead. А можно как нибудь создать дополнительный поток не создавая при это класс? Code
|
|
|
Rocky |
27.1.2011, 15:26
Сообщение
#5
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
Так processEvents вызывается где-нибудь из рекурсивной функции или нет?
|
|
|
breeve |
27.1.2011, 15:50
Сообщение
#6
|
Участник Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: 1 |
Ну можно попробовать поставить задержку (через таймер) на начало работы функции, чтобы успело все отразиться, а потом из функции делать вызов qApp->processEvents(). Если я правильно понял тогда получится что перед тем как запуститься функция, разок покажет Лэйбл с нулями, и затем функция начнет работать. И только после окончания функции он снова обновит Лэйбл. Нужно чтобы было примерно как, если в бесконечном цикле прибавлять по единичке к переменной, и затем через qDebug() ее выводить. Одна цифра будет сменяться другой оч быстро. Пытаюсь тоже самое только лэйбл. выводить. Так processEvents вызывается где-нибудь из рекурсивной функции или нет? Сделал все заработало. О_о Только не совсем понимаю как работает этот процесс ивентс.. |
|
|
Rocky |
27.1.2011, 16:33
Сообщение
#7
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
|
|
|
Текстовая версия | Сейчас: 26.11.2024, 11:20 |