0

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

4

0 回答 0