Domanda

Ho realizzato un progetto con Qt e OpenGL.

In Qt paintGL () è stato ripetutamente chiamato I beleive, quindi sono stato in grado di modificare i valori al di fuori di quella funzione e chiamare update () in modo che dipingesse una nuova immagine. Credo anche che abbia chiamato initializeGL () non appena avvii il programma.

Ora la mia domanda è:

Voglio la stessa funzionalità in un programma diverso. Non ho bisogno di disegnare immagini, ecc. Mi stavo solo chiedendo se c'era un modo per fare una funzione come paintGL () che continua a essere chiamata in modo che l'applicazione non si chiuda mai. Ho provato a usare solo un ciclo while (true) che ha mantenuto il mio programma in esecuzione, ma la GUI era inattiva a causa del ciclo while.

Eventuali suggerimenti, tranne il thread preferibilmente.

Grazie.

È stato utile?

Soluzione

Il meccanismo esatto dipenderà dal toolkit GUI che stai utilizzando. In generale, l'app deve eseguire costantemente il ciclo di esecuzione per gli eventi da inviare. Ecco perché la tua app non rispondeva quando era in esecuzione in un ciclo mentre .

Se hai bisogno di qualcosa di riverniciato costantemente, il modo più semplice è quello di creare un timer quando viene creata la tua finestra, e quindi nel gestore o nel callback del timer, invalidi la tua finestra che impone una riverniciatura. Il gestore della vernice può quindi essere chiamato alla frequenza del timer, ad esempio 25 volte al secondo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top