QSqlTableModel结合Table View控件MYSQL数据增删操作
控件设计

数据库连接及模块初始化
widget.h
private:Ui::Widget *ui;QSqlTableModel *t;
widget.cpp
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");db.setDatabaseName("mydatabase");db.setHostName("localhost");db.setUserName("root");db.setPassword("root");if(db.open()){QMessageBox::information(this,"连接提示","连接成功");t = new QSqlTableModel;t->setTable("student");ui->tableView->setModel(t);}else {QMessageBox::information(this,"连接提示","连接失败");}
}
数据增删改查操作
widget.cpp
void Widget::on_clearButton_clicked()
{t->setTable(t->tableName());t->setFilter("id < 0");t->select();
}void Widget::on_searchButton_clicked()
{t->setFilter("");t->select();
}void Widget::on_insertButton_clicked()
{int row = t->rowCount();t->insertRow(row);ui->tableView->selectRow(row);}void Widget::on_deleteButton_clicked()
{QModelIndexList selection = ui->tableView->selectionModel()->selectedRows();for (const QModelIndex &index : selection) {t->removeRow(index.row());t->select();}
}void Widget::on_submitButton_clicked()
{if (!t->submitAll()) {qDebug() << "Error submitting changes:" << t->lastError().text();}
}
