Ich versuche, ein OpenGL-Visualisierungsprogramm für einige wissenschaftliche Daten mit Qt zu schreiben. Ich möchte in der Lage sein, mein bestehendes Programm unverändert zu verwenden und einfach das glwidget aufrufen zu können und ihm zu sagen, dass es die Daten am Ende jedes Zeitschritts aktualisieren soll. Um jedoch ein Qt-Programm auszuführen, müssen Sie QApplication
und dann qt.run()
verwenden, was die CPU blockiert. HierWissenschaftliche Visualisierung mit OpenGL und Qt
ist der Pseudocode
main()
{
..set up stuff
myVisualizer = new myGLWidget();
for(int i=0;i<1000;i++)
{
..do calculations
myVisualizer.update(new data)
}
}
Ich weiß, dass ich alle meine vorhandenen Code in eine QThread
setzen könnte und haben sie ein Signal senden, wenn es fertig ist, um ein Update zu verbinden. Es wäre einfach einfacher so. Hat jemand eine Idee, wie man das löst?
Upvoted diese Antwort als einen Timer verwenden ist die Art, wie ich es tun würde. Kein Bedarf für einen separaten Thread. Allerdings sehe ich nicht die Notwendigkeit der Single-Shot-Timer auf den Redraw-Slot und auch, warum das Widget eine Unterklasse von QDialog und nicht QGLWidget ist. – Troubadour