2013-11-04 51 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)) 
    } 
}