2010-08-25 84 views
2

我有三個QLineEdit字段,其內容變化非常快(100 /秒)。 不知何故,它崩潰的應用程序。也許這是一個錯誤,或者我犯了一個錯誤。快速變化的QLineEdit崩潰應用程序

下面是一些代碼:

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

調用堆棧:http://pastebin.com/RmkZHTjk

有時我得到這個錯誤:

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

調用堆棧是:http://pastebin.com/c1u53a0Z

我用QLabel試了一下,然後我得到另一個錯誤:

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

調用堆棧:http://pastebin.com/G4yeiW2Y

+0

@RolandSoós:您是否嘗試過使用代碼做一些更改?例如,'setText()'只有一個'QLineEdit',或者而不是'QLineEdit'使用'QLabel'?有趣的是,結果會是什麼......是否真的需要用這個速度打印加速度值? – mosg 2010-08-26 05:13:06

+0

您是否以較慢的速度嘗試跟蹤回溯的弦(或者只是一個單行?)?此外,回溯多久?有時堆棧溢出會導致Qt深處的崩潰,並且一個人撓了撓頭,直到他注意到堆棧的大小。 – 2010-08-26 08:28:37

+0

是的,我試過用QLabel,然後我得到了另一個錯誤。我已將此信息添加到問題中。我試圖將其限制在10轉/秒。它在6%的處理器使用情況下運行良好。在100change/sec的處理器使用率是50%(我有2個核心)。 – 2010-08-26 08:31:02

回答

1

讓我們得到這個關閉。這是弗蘭克一週前發表評論的答案。

@RolandSoós:它看起來像我從非UI線程調用setText()。這是行不通的,QWidgets不是線程安全的。 - Frank