2010-08-25 4 views
2

J'ai trois champs QLineEdit, dont le contenu change très rapidement (100/seconde). D'une certaine manière, il bloque l'application. Peut-être que c'est un bug ou que je fais une erreur.Changement rapide QLineEdit écrasement de l'application

Voici un code:

acc[0]->setText(QString("%1").arg(acceleration.x)); 
acc[1]->setText(QString("%1").arg(acceleration.y)); 
acc[2]->setText(QString("%1").arg(acceleration.z)); 

La pile d'appel: http://pastebin.com/RmkZHTjk

Et parfois, je reçois cette erreur:

Unhandled exception at 0x6518cbb3 (QtGuid4.dll) in Test.exe: 0xC0000005: Access violation reading location 0x0000002c.

pile d'appel pour cela: http://pastebin.com/c1u53a0Z

I essayé avec QLabel, puis je reçois une autre erreur:

Unhandled exception at 0x751a9617 in Test.exe: Microsoft C++ exception: std::bad_alloc at memory location 0x03aeea70..

pile d'appel: http://pastebin.com/G4yeiW2Y

+0

@Roland Soós: Avez-vous essayé de faire des changements avec le code? Par exemple, 'setText()' juste avec un 'QLineEdit', ou au lieu de' QLineEdit' utiliser 'QLabel'? Intéressant, quel sera le résultat ... Est-il vraiment nécessaire d'imprimer des valeurs d'accélération avec cette vitesse? – mosg

+0

Avez-vous essayé avec les cordes du backtrace à une vitesse plus lente (ou juste un seul lineedit?)? Aussi, combien de temps sont les backtraces? Parfois, les débordements de pile provoquent des plantages profonds dans Qt et on se gratte la tête jusqu'à ce qu'il remarque la taille de la pile. –

+0

Oui, je l'ai essayé avec QLabel, puis j'ai une autre erreur. J'ai ajouté cette information à la question. J'ai essayé de le limiter à 10change/sec. Il a bien fonctionné sur l'utilisation de processeur de 6%. Sur 100change/s, l'utilisation du processeur est de 50% (j'ai 2 core). –

Répondre

1

Lets get cette fermeture. C'est la réponse de Frank publiée comme commentaire il y a une semaine.

@Roland Soós: Il me semble que vous appelez setText() à partir du thread non-UI. Cela ne fonctionnera pas, QWidgets ne sont pas thread-safe. - Frank

Questions connexes