1將讀取的數據通過表格的方式顯示出來
#ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QSqlTableModel> namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); private slots: void on_BtnAdd_clicked(); void on_BtnSure_clicked(); void on_BtnCancel_clicked(); void on_BtnDel_clicked(); void on_BtnFind_clicked(); private: Ui::Widget *ui; QSqlTableModel *model; }; #endif // WIDGET_H
#include "widget.h" #include "ui_widget.h" #include <QSqlDatabase> #include <QDebug> #include <QMessageBox> #include <QSqlError> #include <QSqlQuery> #include <QVariantList> #include <QSqlTableModel> #include <QSqlRecord> #include <QItemSelectionModel> Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); //打印Qt支持的數據庫驅動 qDebug()<<QSqlDatabase::drivers(); //添加Sqlite數據庫 QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); //設置數據庫 db.setDatabaseName("../info.db"); //打開數據庫 if(!db.open()) { QMessageBox::warning(this,"error",db.lastError().text()); return; } //設置模型 model = new QSqlTableModel(this); model->setTable("student");//指定使用哪個表 //把model->放在view ui->tableView->setModel(model); //顯示model的數據 model->select(); model->setHeaderData(0,Qt::Horizontal,"學號"); //設置model的編輯模式,手動提交修改 model->setEditStrategy(QSqlTableModel::OnManualSubmit); //設置view中的數學庫不允許修改 //ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); } Widget::~Widget() { delete ui; } void Widget::on_BtnAdd_clicked() { //添加空記錄 QSqlRecord record = model->record();//獲取空記錄 //獲取行號 int row = model->rowCount(); model->insertRecord(row, record); } void Widget::on_BtnSure_clicked() { model->submitAll();//提交動作 } void Widget::on_BtnCancel_clicked() { model->revertAll(); //取消所有動作 model->submitAll(); //提交所有動作 } void Widget::on_BtnDel_clicked() { //獲取選中的模型 QItemSelectionModel *sModel = ui->tableView->selectionModel(); //取出模型中的索引 QModelIndexList list = sModel->selectedRows(); //刪除所有選中行 for(int i = 0; i<list.size();i++) { model->removeRow(list.at(i).row()); } } void Widget::on_BtnFind_clicked() { QString name = ui->lineEdit->text(); QString str = QString("name = '%1'").arg(name);//單引號不能忘 model->setFilter(str); model->select(); }