в общем каша такова:
Пишу на Qt 3.3.8.
Есть класс Считалка, который расчитывает положение 3D точек(вертексов), например:
class MyCalc {
public:
void CalculatePositions();
Vertex3D* GetVertexes();
private:
Vertex3D* vertexes_;
};
А QApplication::processEvents() тут не поможет?
когда то использовал эту функцию в другом приложении, что то было ужасно некрасиво и она выбросилась из моска как "неправильная", но тут сейчас проверю, спасибо
upd: проверил, в принципе работает, но не так как хотелось бы
главное окно сильно тормозит, причиной этому я подозреваю CalculatePositions(), эта функция может занимать 0,5 - 5 секунд и в это время события соответственно не будут обрабатываться
Поэтому вопрос остается актуальным.
Я думал сделать так:
Создать поток class MyThread : public QThread,
run() {
CalculatePositions();
mutex.lock();
SetVertexes();
mutex.unlock();
}
MyGLWidget::onStartButtonPressed() {
MyThread *thread = new MyThread();
tread->start();
}
MyGLWidget()::paintGL {
mutex.lock()
calculator_->GetVertexes();
mutex.unlock();
RenderVertexes();
}
в общем как это обычно и бывает, полезно на форуме выкладывать свои мысли - тогда проблему видишь более ясно и решение приходит в голову
в предыдущем посте я, в принципе, дал ответ на свой вопрос, просто реализация у меня была несколько не такая как я описал... сделал так как описал и заработало
потом подвешал Таймер и все работает идеально и быстро
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)