Tachometer というウィジェットは、対応するモデルから信号が送信されるとそれに応じて更新されますが、ウィジェットをレイアウトに追加してもまったく応答しません。これは何が原因でしょうか? モデルまたはビューの内部を表示せずに (これは網羅的です)、機能していない場所を指摘しようとします。
void MainWindow::setupWidgets()
{
QHBoxLayout *horiz1 = new QHBoxLayout();
QHBoxLayout *horiz2 = new QHBoxLayout();
odometer = new Odometer(ui->dashFrame);
fuelGauge = new FuelGauge(ui->dashFrame);
tripometer = new Tripometer(ui->dashFrame);
tachometer = new Tachometer(ui->dashFrame);
temperatureGauge = new TemperatureGauge(ui->dashFrame);
oilPressureGauge = new OilPressureGauge();
QVBoxLayout *vertOPG = new QVBoxLayout();
if ( oilPressureGauge->getTitle() != "" )
{
QLabel *OPGLabel = new QLabel(oilPressureGauge->getTitle());
vertOPG->addWidget(OPGLabel);
}
vertOPG->addWidget(oilPressureGauge);
speedometer = new Speedometer(ui->dashFrame);
horiz1->addWidget(tachometer);
horiz1->addWidget(speedometer);
horiz2->addWidget(fuelGauge);
horiz2->addWidget(temperatureGauge);
horiz2->addLayout(vertOPG);
horiz2->addWidget(tripometer);
horiz2->addWidget(odometer); // will NOT update when added to layout
QVBoxLayout *vert1 = new QVBoxLayout(ui->dashFrame);
vert1->addLayout(horiz1);
vert1->addLayout(horiz2);
this->ui->dashFrame->setLayout(vert1);
}
他のウィジェットが期待どおりに更新されることに当惑していますが、タコメーターという名前のオブジェクトは更新されません。前に言ったように、レイアウトに追加しないと、たとえば
// ...
tachometer = new Tachometer(ui->dashFrame);
// ...
うまく機能しているようです。さらに、コンソールでデバッグすると、タコメーターの RPM 値が、タコメーターのビューを更新する適切なスロットに送信されていることがわかります (タコメーターが最終的に更新に応答したことに気付きましたが、毎回更新されていません)。タイムアウトする必要があります)。ここには明らかにいくつかの遅延の問題が関係しているようです。これがなぜなのかについて誰かが考えを持っているなら、私はいくつかの明確化を大いに感謝します.