簡體   English   中英

QtQuick在TableView中設置模型

[英]QtQuick setting up model in TableView

所以我在qmlfile上有一個tableview,我試圖從c ++設置模型。

我正在使用的模型是QSqlTableModel,如果創建一個新的tableview並從c ++設置模型,它似乎可以工作,但是當我將模型傳遞給qmlfile中的model屬性時,它不起作用,我無法確定搞清楚為什么...

C ++模型代碼為:

QSqlTableModel * SqlEventModel::getTableData(QString tableName, QTableView *item){

    const QString queryStr = "SELECT sql FROM sqlite_master WHERE tbl_name = '" + tableName +"' AND type = 'table'" ;
    QSqlQuery query(queryStr);
    if (!query.exec())
        qFatal("Query failed");


    QSqlDatabase db = QSqlDatabase::database(":memory:");

    QSqlTableModel *model = new QSqlTableModel(item, db);
    model->setTable(tableName);
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
    model->select();


    int i=0;
    while (query.next()){
        model->setHeaderData(i, Qt::Vertical, query.value(i).toString());
        i++;
    }

   return   model;

}

返回一個模型,該模型在c ++中可以創建一個表視圖並分配模型,但是在執行此操作時:

TableView{
    id: table;
    width: parent.width -100
    height: parent.height -200
    anchors.horizontalCenter: parent.horizontalCenter
    anchors.top: parent.top
    anchors.topMargin: 90
    model: SqlEventModel.getTableData(GData.tName,table)
}

它不起作用,即使我調試tableview模型不為空,它也只是顯示一個空表...

如果我添加:

QTableView *view =  new QTableView();
view->setModel(model);
view->show();

就在返回c ++函數之前,我得到一個帶有表的新窗口,該表可以正確顯示該表...我試圖添加具有與c ++中相同的角色名的列,它們也不會填充。...這是一個兩個表的屏幕截圖

在此處輸入圖片說明

您需要指定要使用TableViewColumn顯示的列。 這在TableView的文檔中進行了說明

TableView {
    TableViewColumn {
        role: "title"
        title: "Title"
        width: 100
    }
    TableViewColumn {
        role: "author"
        title: "Author"
        width: 200
    }
    model: libraryModel
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM