我有一个用 Qt 为嵌入式 linux 编写的图形应用程序。此应用程序的一部分是每 250 毫秒更新一次显示屏幕。但是,大约 8-10 小时后,应用程序崩溃并出现“QList:内存不足”错误。我已经隔离了函数和它发生的行(在某种意义上),但我不知道它为什么会发生,因为我没有使用 QList。此函数中唯一有效的代码行位于此问题的末尾。
我意识到 QList 永远不会“缩小”它用来保存项目的内存,但我没有在我的代码中的任何地方使用 QList。我只是调用“setStyleSheet”来在 ui 小部件(标签、文本字段等)上设置各种字体和属性。还有更多代码,但它们都被注释掉了,所以我假设它与 setStyleSheet 有关。有谁知道为什么会这样?如果是这样,你知道解决这个问题的方法吗?我正在使用 Qt 4.3 btw(由于它专门加载在我正在使用的嵌入式系统上)。
非常感谢您的时间。
if(twc_rx){
ui->label_Rx->setStyleSheet("QLabel { background-color: lime; font: bold 16px 'Arial' }");
}else if(!twc_rx){
ui->label_Rx->setStyleSheet("QLabel { background-color: grey; font: bold 16px 'Arial' }");
}//line 561 to 684
if(twc_tx){
ui->label_Tx->setStyleSheet("QLabel { background-color: lime; font: bold 16px 'Arial' }");
}else{
ui->label_Tx->setStyleSheet("QLabel { background-color: grey; font: bold 16px 'Arial' }");
}if(ats_stat){
ui->label_ATS->setStyleSheet("QLabel { background-color: lime; border-radius: 10; font: bold 16px 'Arial'}");
}else{
ui->label_ATS->setStyleSheet("QLabel { background-color: red; border-radius: 10; font: bold 16px 'Arial'}");
}
if(atp_stat){
ui->label_atp2->setStyleSheet("QLabel { background-color: lime; border-radius: 10; font: bold 16px 'Arial'}");
}else{
ui->label_atp2->setStyleSheet("QLabel { background-color: red; border-radius: 10; font: bold 16px 'Arial'}");
}
if(ato_stat){
ui->label_ATO->setStyleSheet("QLabel { background-color: lime; border-radius: 10; font: bold 16px 'Arial'}");
}else{
ui->label_ATO->setStyleSheet("QLabel { background-color: red; border-radius: 10; font: bold 16px 'Arial'}");
}
编辑:
我应该提到,这些行基于来自另一个子系统的输入消息每 250 毫秒执行一次。我已经走了那条路,这是一条死胡同。这是错误代码。