QtCreator 使用SQL模型類(QSqlQueryModel,QSqlTableModel,QSqlRelationalTableModel)

Qt中的QSqlQueryModel,QSqlTableModel,QSqlRelationalTableModel

1 SQL查詢模型,QSqlQueryModel

    QSqlQueryModel * model = new QSqlQueryModel(this);
    model->setQuery("select * from student");
    model->setHeaderData(0,Qt::Horizontal,tr("學號"));
    model->setHeaderData(1,Qt::Horizontal,tr("姓名"));
    model->setHeaderData(2,Qt::Horizontal,tr("課程"));

    QTableView * tableView = new QTableView(this);
    tableView->setModel(model);
    setCentralWidget(tableView);


2 SQL表格模型

若要成爲只讀模型,直接設置視圖爲

    ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);//可以設置爲只讀模型

    tableModel = new QSqlTableModel(this);
    tableModel->setTable("student");
    tableModel->select();

    tableModel->setEditStrategy(QSqlTableModel::OnManualSubmit);
    ui->tableView->setModel(tableModel);

3 SQL關係表格模型(QSqlRelationalTableModel)

他繼承自QSqlTableModel,並對他作了拓展,

. 關係QSqlRelation(const QString & tableName, const QString & indexColumn, const QString & displayColumn)

    QSqlRelationalTableModel *model = new QSqlRelationalTableModel(this);
    model->setTable("student");

    QSqlRelation sqlRelation("course","id","name");//設置關係
    model->setRelation(2,sqlRelation);

    model->select();


    QTableView *tableView = new QTableView(this);
    tableView->setModel(model);
    setCentralWidget(tableView);

    
    //QSqlRelationalDelegate委託類,可以爲QSqlRelationalTableModel顯示和編輯數據

    tableView->setItemDelegate(new QSqlRelationalDelegate(tableView));

注意點:

QSqlQuery:熟悉SQL語法,需要顯示特定的數據(不需要將所有的數據顯示出來)顯示出來,就用它

QSqlTableModel:顯示一個單獨的表格

QSqlQueryModel:用來顯示任意結果集,想使其可讀/寫,最好重新實現flags()和setDat()函數

QSqlRelationalDelegate:要實現關聯的效果,需要先關聯(model->setRelation()),再查詢獲得結果




發佈了44 篇原創文章 · 獲贊 12 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章