Здравствуйте, гость ( Вход | Регистрация )
DIMEDROLL | Дата 8.2.2010, 23:55 |
в общем как это обычно и бывает, полезно на форуме выкладывать свои мысли - тогда проблему видишь более ясно и решение приходит в голову в предыдущем посте я, в принципе, дал ответ на свой вопрос, просто реализация у меня была несколько не такая как я описал... сделал так как описал и заработало потом подвешал Таймер и все работает идеально и быстро |
|
DIMEDROLL | Дата 7.2.2010, 21:15 |
когда то использовал эту функцию в другом приложении, что то было ужасно некрасиво и она выбросилась из моска как "неправильная", но тут сейчас проверю, спасибо upd: проверил, в принципе работает, но не так как хотелось бы главное окно сильно тормозит, причиной этому я подозреваю CalculatePositions(), эта функция может занимать 0,5 - 5 секунд и в это время события соответственно не будут обрабатываться Поэтому вопрос остается актуальным. Я думал сделать так: Создать поток class MyThread : public QThread,
но что то мьютексы не лочатся правильно, либо я неправильно их использую |
|
Rocky | Дата 7.2.2010, 21:06 |
А QApplication::processEvents() тут не поможет? | |
DIMEDROLL | Дата 7.2.2010, 21:01 |
в общем каша такова: Пишу на Qt 3.3.8. Есть класс Считалка, который расчитывает положение 3D точек(вертексов), например:
CalculatePositions() расчитывает новые положения точек и сохраняет их в массив vertexes_. Есть класс-виджет MyGLWidget для рендеринга этих точек который унаследован от QGLWidget. И есть главное окно с кнопками, старт и стоп для начала расчетов-рендера и для остановки. Задача: по кнопке Старт, начать бесконечный цикл CalculatePositions(); GetVertexes(); RenderVertexes(); при этом кнопка Стоп должна оставаться активной, тоесть что бы пользователь мог ее нажать и бесконечный цикл остановился. Как это правильно сделать? если я в теле MyGLWidget::onStartButtonPressed() это сделаю, то все зависнет и будет бесконечно рендерится. |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 29.3.2024, 12:01 |