![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
DIMEDROLL |
![]()
Сообщение
#1
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 165 Регистрация: 28.9.2008 Из: Киев Пользователь №: 304 Спасибо сказали: 23 раз(а) Репутация: ![]() ![]() ![]() |
в общем каша такова:
Пишу на Qt 3.3.8. Есть класс Считалка, который расчитывает положение 3D точек(вертексов), например:
CalculatePositions() расчитывает новые положения точек и сохраняет их в массив vertexes_. Есть класс-виджет MyGLWidget для рендеринга этих точек который унаследован от QGLWidget. И есть главное окно с кнопками, старт и стоп для начала расчетов-рендера и для остановки. Задача: по кнопке Старт, начать бесконечный цикл CalculatePositions(); GetVertexes(); RenderVertexes(); при этом кнопка Стоп должна оставаться активной, тоесть что бы пользователь мог ее нажать и бесконечный цикл остановился. Как это правильно сделать? если я в теле MyGLWidget::onStartButtonPressed() это сделаю, то все зависнет и будет бесконечно рендерится. |
|
|
![]() |
Rocky |
![]()
Сообщение
#2
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: ![]() ![]() ![]() |
А QApplication::processEvents() тут не поможет?
|
|
|
DIMEDROLL |
![]()
Сообщение
#3
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 165 Регистрация: 28.9.2008 Из: Киев Пользователь №: 304 Спасибо сказали: 23 раз(а) Репутация: ![]() ![]() ![]() |
когда то использовал эту функцию в другом приложении, что то было ужасно некрасиво и она выбросилась из моска как "неправильная", но тут сейчас проверю, спасибо
upd: проверил, в принципе работает, но не так как хотелось бы ![]() главное окно сильно тормозит, причиной этому я подозреваю CalculatePositions(), эта функция может занимать 0,5 - 5 секунд и в это время события соответственно не будут обрабатываться Поэтому вопрос остается актуальным. Я думал сделать так: Создать поток class MyThread : public QThread,
но что то мьютексы не лочатся правильно, либо я неправильно их использую Сообщение отредактировал DIMEDROLL - 7.2.2010, 21:38 |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 17.2.2025, 6:24 |