根据代码分析,关闭按钮的槽函数中,关闭按钮设置了温度值为0。而关闭界面后重新进入界面时,会重新加载上次的状态,此时会调用loadLastStatus函数,其中会根据上次的状态设置温度值。由于关闭按钮的槽函数中将温度值设置为0,因此重新进入界面后,温度值会变为0。

要解决这个问题,可以在loadLastStatus函数中判断是否是重新进入界面的情况,如果是,则不将温度值设置为0。可以通过设置一个标志位来判断是否是重新进入界面,例如在AirCondition类中添加一个私有成员变量m_reEnterFlag,默认值为false,当重新进入界面时,将其设置为true,并在loadLastStatus函数中判断该标志位的值,如果为true,则不将温度值设置为0。同时,在关闭按钮的槽函数中,将m_reEnterFlag设置为false。

具体代码如下所示:

在AirCondition类的私有成员变量中添加一个标志位:

bool m_reEnterFlag;

在loadLastStatus函数中判断标志位的值:

void AirCondition::loadLastStatus()
{
    // ...

    if (m_reEnterFlag) {
        m_loadLastStatus = false;
    }

    // ...
}

在关闭按钮的槽函数中设置标志位的值:

void AirCondition::switchButton_status()
{
    // ...

    if (QObject::sender() == ui->SwitchStatus) {
        // ...

        m_reEnterFlag = false;
    }

    // ...
}

在重新进入界面的地方将标志位设置为true:

void AirCondition::reEnterWidget()
{
    m_reEnterFlag = true;
    // 加载上次更改的状态
    loadLastStatus();
}

这样就能够解决关闭按钮后重新进入界面温度值变为0的问题

#include airconditionh#include ui_airconditionh#include switchformh#include lcdformh#include sqliteh#include QSqlQuery#include QSqlError#include QDoubleSpinBox#include QTimer#include QCloseEvent#inclu

原文地址: https://www.cveoy.top/t/topic/iF87 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录