Название: Обновление виджета во время длительных вычислений Отправлено: Winstrol от Май 13, 2005, 21:53 Вообщем такой вопрос. Пытаюсь обновлять QlistBox во время вычислений, да не получается.
Так работает: Код:
То есть в листбокс заносятся новые элементы и их видно. А так нет: Код:
Нужен универсальный способ, не зависящий от «магической» константы 10. ЗЫ QT3.1.2 Название: Обновление виджета во время длительных вычислений Отправлено: Admin от Май 13, 2005, 23:07 попробуй
Цитировать void QApplication::processEvents () Processes pending events, for 3 seconds or until there are no more events to process, whichever is shorter. You can call this function occasionally when your program is busy performing a long operation (e.g. copying a file). Название: Обновление виджета во время длительных вычислений Отправлено: Winstrol от Май 13, 2005, 23:20 Цитата: "Admin" попробуй Цитировать void QApplication::processEvents () Processes pending events, for 3 seconds or until there are no more events to process, whichever is shorter. You can call this function occasionally when your program is busy performing a long operation (e.g. copying a file). Увы не канает. Код: void QApplication::processEvents( int maxtime ) Кстати, народ, протестируйте пожалуйста на других версиях. Название: Обновление виджета во время длительных вычислений Отправлено: Admin от Май 14, 2005, 10:14 тогда используй тред!!
Название: Обновление виджета во время длительных вычислений Отправлено: Winstrol от Май 14, 2005, 20:10 Пока вот так работает. Правда я пока не до конца уверен, что 100% правильно.
Код:
Цитата: "Admin" тогда используй тред!! Пример кинь. Интерактивности с пользователем у меня по логике быть не должно. Только вывод на экран. Название: Обновление виджета во время длительных вычислений Отправлено: Admin от Май 14, 2005, 20:38 так наследуешся от QThread
в методе run заполняешь свой QListBox Название: Обновление виджета во время длительных вычислений Отправлено: Keiko от Май 15, 2005, 03:18 а кто даст гарантию, что заполнение QListVeiw выполнится до того, как начнётся while(1) ?
Название: Обновление виджета во время длительных вычислений Отправлено: Sergeich от Май 16, 2005, 15:03 Цитата: "Admin" так наследуешся от QThread в методе run заполняешь свой QListBox Нельзя напрямую юзать методы виджетов из боковых ниток!!! Цитировать Threads that wish to display data in a widget cannot modify the widget directly, so they must post an event to the widget using QApplication::postEvent(). The event will be delivered later on by the GUI thread. (Qt Reference Documentation, Thread Support in Qt, Thread-safe Event Posting) |