Я смоделировал динамическое устройство, такое как пружинный демпфер. QT Решает уравнение движения в реальном времени и отображает результат. Я хочу использовать объект Qapplication для отображения данных и выходных данных в «реальном времени». Вся проблема, и вывод на дисплей находится внутри al oop. Все идет хорошо, но когда программа достигает команды return a.exec()
для вывода на дисплей, появляется окно GUI и остается в самой первой итерации. 't застревает там и на каждом l oop программа запускается И в конце l oop обновляет окно GUI в «реальном времени». вот мой код:
#include "QtWidgets/QApplication"
#include "QtWidgets/QGraphicsScene"
#include "QObject"
#include "QTimer"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Motion* ball = new Motion();
// create a scene
QGraphicsScene * scene = new QGraphicsScene();
QGraphicsRectItem* rect = new QGraphicsRectItem();
//show the view
view->show();
L oop Я уже говорил об этом.
for (int i = 0; i<int(j); i++)
{
Sleeper::msleep(50);
double t = time->getTime() + i*0.05;
states2 = world.openLoopSys;
for (int i=0; i<12; i++)
{
states1(i) = states2(i);
}
ball->run();
return a.exec(); // gets stuck there !!!
}
Класс движения:
#include "motion.h"
Motion::Motion()
{
// create an item to put into the scene
setRect(0,0,20,30);
setPos(x(),y());
pos_x = 0;
pos_y = 0;
}
void Motion::run()
{
// connect
QTimer * timer = new QTimer();
connect(this,SIGNAL(timeout()),this,SLOT(move()));
timer->start(50);
}
void Motion::move()
{
setPos(x(),y()-5);
// setPos(0.01*pos_x,-0.01*pos_y);
}
Как я могу решить эту проблему?