1.新车入库
新车入库ui界面设计
运行时新车入库界面
代码实现
void MainWindow::initNewCar(){
//实例化model
model = new QSqlTableModel(this);
//将model设置到tableView视图中
ui->tableView->setModel(model);
//设置model的提交方式为手动提交
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
//在model中设置数据库表
model->setTable("brand");
model->select();
//在model中添加新纪录
QSqlRecord record = model->record(); //获取model空记录
int rows = model->rowCount(); //获取model的行数
model->insertRecord(rows,record);
//点击提交按钮的时候,将在视图中修改的数据,手动提交到数据库中
//点击revert按钮的时候,撤回在视图中修改的数据
}
提交按钮和revert按钮的代码实现
void MainWindow::on_commit_clicked()
{
model->submitAll();
}
void MainWindow::on_revert_clicked()
{
model->revertAll();
model->submitAll();
}
2.修改密码功能的实现
自定义一个类继承QDialog,里面的布局如下
在修改密码类中,点击确定,首先检查编辑框中是否为空,然后检查两次输入的密码是否一致,一致就将原密码和新密码,以信号的方式发送给主界面
代码实现
void reSetPwd::on_rpwd_ok_clicked()
{
o_pwd = ui->o_pwd->text();
n_pwd = ui->n_pwd->text();
QString rn_pwd = ui->rn_pwd->text();
if(o_pwd.isEmpty() || n_pwd.isEmpty() || rn_pwd.isEmpty()){
QMessageBox::critical(this,"错误","密码不能为空");
return;
}
if(n_pwd != rn_pwd){
QMessageBox::critical(this,"错误","两次输入的新密码不一致");
return;
}
emit sigpwd(o_pwd,n_pwd);
}
点击取消按钮时候,关闭修改密码的界面
void reSetPwd::on_rpwd_cancel_clicked()
{
this->close();
}
在主界面中,点击修改密码就初始化一个修改密码的类,并处理修改密码类发送来的信号
void MainWindow::initResetPwd(){
connect(ui->reset_pwd,&QAction::triggered,this,[=](){
rpwd = new reSetPwd(this);
rpwd->show();
connect(rpwd,&reSetPwd::sigpwd,this,&MainWindow::slotpwd);
});
}
主界面接受修改密码发送来的原密码和新密码,判断原密码与自己存储的是否一致,如果一致,就将修改的新密码提交到数据库中,否则,提示错误
void MainWindow::slotpwd(QString o_pwd, QString n_pwd){
if(o_pwd == passwd){
QSqlQuery query;
QString sql = QString("update user set pwd = '%2' where user = '%1'").arg(username).arg(n_pwd);
query.exec(sql);
QSqlDatabase::database().commit();
passwd = n_pwd;
qDebug() << passwd;
delete rpwd;
}else {
QMessageBox::critical(this,"错误","您输入的原密码错误");
return;
}
}
3.退出功能的实现
//点击退出的时候,销毁窗口
connect(ui->quit,&QAction::triggered,this,[=](){
this->close();
});