当从其相应模型发送信号时,名为 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 值被发送到更新转速表视图的适当插槽(我刚刚注意到转速表最终响应了更新,但每次更新后它都没有更新超时)。似乎这里明显涉及一些延迟问题。如果有人可能知道为什么会这样,我将不胜感激。