QT Qapplication застрял в «return a.exe c ()» в цикле вычислений - PullRequest
0 голосов
/ 27 мая 2020

Я смоделировал динамическое устройство, такое как пружинный демпфер. 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);
}

Как я могу решить эту проблему?

...