可視化數據庫——model(數據)/view(視圖)


 一、創建顯現數據庫視圖

1、創建並打開數據庫

2、設置模型
    QSqlTableModel *model = new QSqlTableModel(this);
    //模型自動關聯剛剛打開的數據庫
    model->setTable("student");//關聯數據庫中的表student
    
3、把model放在view
    ui->tableView->setModel(model);//tableView是設計師中的QTableView
    model->select();//顯示model里的數據

  

二、細節

    model->setHeaderData(0, Qt::Horizontal, "學號");//設置表頭
    //設置model的編輯策略為手動提交修改
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
    //設置view視圖上不允許修改數據
    ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);

 

三、添加刪除和保存

  

//添加
void Widget::on_buttonAdd_clicked()
{
    //添加空記錄
    QSqlRecord record = model->record(); //獲取空記錄
    //獲取行號
    int row = model->rowCount();
    model->insertRecord(row, record);
}
//提交(即確定)
void Widget::on_buttonSure_clicked()
{
    model->submitAll(); //提交動作
}
//撤銷
void Widget::on_buttonCancel_clicked()
{
    model->revertAll(); //取消所用動作
    model->submitAll(); //提交動作
}
//刪除
void Widget::on_buttonDel_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_buttonFind_clicked()
{
    QString name = ui->lineEdit->text();
    QString str = QString("name = '%1'").arg(name);
    model->setFilter(str);
    model->select();
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM