2013-11-04 86 views
0

在此示例中,我想通過在sectionComboBox中進行選擇來過濾rsModel中包含的數據。在sectionComboBox,我顯示一個部分的名稱,並想rsModel具有匹配SECTION_ID過濾條目使用組合框輸入篩選QSqlTableModel

ComboBox { 
     id: sectionComboBox 
     model: sectionModel 
     textRole: "NAME" 
     onCurrentTextChanged: rsModel.setQLFilter("SECTION_ID=" + ??) 
    } 

QLTableModel子類QSqlRelationalTableModel和器具setQLFilter

void QLSqlTableModel::setQLFilter(const QString filter){ 
    setFilter(filter); 

}

+0

什麼問題了嗎? –

+0

你正在使用信號'onCurrentTextChanged',所以我猜你正在尋找'currentText'屬性? – koopajah

+0

@koopajah currentText將在sectionModel中生成當前行的NAME。但是,我想使用當前行的ID更新rsModel。 – onezeno

回答

1

這裏的代碼這似乎工作。請建議您可能會看到的任何改進。

QLSqlTableModel.cpp(從QSqlRelationTableModel派生)

void QLSqlTableModel::setQLFilter(const QString & field, int value){ 
    QString tempString = field + QString::number(value); 
    setFilter(tempString); 
} 


QVariant QLSqlTableModel::data(int row, int role) const { 
    QModelIndex qmi; 
    qmi = index(row, role, qmi); 
    return data(qmi, role); 
} 

main.qml

ComboBox { 
    id: sectionComboBox 
    model: sectionModel 
    textRole: "NAME" 
    onCurrentIndexChanged: { 
     rsModel.setQLFilter("SECTION_ID=", sectionModel.data(currentIndex, 0)) 
    } 
}