12 Qt各界面控件修改,同步修改数据库

项目是开发上位机软件,需要在配置界面中,修改配置后,同步修改数据库,这里的数据库用的是sqlite3,系统是linux。

  1. QLineEdit

定义的QLineEdit类型,触发信号修改数据库方法如下:

  connect(systemNameLineEdit, &QLineEdit::textChanged,this->systemNameLineEdit,[=](){
        _pDataAccess->system_config_update("machine_name",systemNameLineEdit->text());
    });//当界面上“系统名”栏改变时,更新数据库

2 QTabBar

定义的QTabBar类型,触发信号修改数据库方法如下:

    connect(languageSettingTabBar, &QTabBar::currentChanged,this->languageSettingTabBar,[=](){
        _pDataAccess->system_config_update("lang",QString::number(languageSettingTabBar->currentIndex()));
    });//当界面上“语言设置”栏改变时,更新数据库

3  QCheckBox

定义的QCheckBox类型,触发信号修改数据库方法如下:

    connect(dcsRadioButton, &QCheckBox::stateChanged,this->dcsRadioButton,[=](){
        _pDataAccess->system_config_update("dcs_switch",QString::number(dcsRadioButton->checkState()));
    });//当界面上“DCS”是否打开状态改变时,更新数据库

5 QSpinBox

定义的QCheckBox类型,触发信号修改数据库方法如下:信号需要这样写QOverload<int>::of(&QSpinBox::valueChanged)

    connect(broadcastTimeComboBox,  QOverload<int>::of(&QSpinBox::valueChanged),this->broadcastTimeComboBox,[=](){
        _pDataAccess->system_config_update("broadcast_time",QString::number(broadcastTimeComboBox->value()));
    });//当界面上“广播时间”是否打开状态改变时,更新数据库

注意:connect的第三个参数,要添加this->变量,如代码段所示,是因为变量在上引文中应用的如何,发射信号后,所定义的变量已经释放,会内存越界,所以这里报一个警告:

Pass a context object as connect 3th paramter

数据库代码如下:这里可以用同一个函数修改所有配置界面中的控件数据。

void SqlDataAccess::system_config_update(QString lineName, QString newValue)
{
    QSqlQuery*  _querySql=new  QSqlQuery(sqlDatabase);
    QString p=QString("UPDATE system_config set %1='%2'")
            .arg(lineName,newValue);
    _querySql->exec(p);//若该sql语句准备好了,可以被执行。则返回true

}

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值