組み込みLinux用にQtで書かれたグラフィカルアプリケーションがあります。このアプリケーションの一部は、250ミリ秒ごとに表示画面を更新することです。ただし、約8〜10時間後、アプリケーションは「QList:メモリ不足」エラーでクラッシュします。関数とそれが発生する行を(ある意味で)分離しましたが、QListを使用していないため、なぜ発生するのかわかりません。この関数のアクティブなコード行は、この質問の最後にあります。
QListは、アイテムを保持するために使用するメモリを「縮小」しないことを認識していますが、コード内のどこにもQListを使用していません。uiウィジェット(ラベル、テキストフィールドなど)にさまざまなフォントとプロパティを設定するために「setStyleSheet」を呼び出すだけです。コードは他にもありますが、すべてコメント化されているため、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ミリ秒ごとに実行されていることに注意してください。私はすでにその道を進み、行き止まりになっています。これはエラーコードです。