使用组合框输入过滤QSqlTableModel

时间:2013-11-04 20:54:07

标签: qt qml

在示例中,我想通过在sectionComboBox中进行选择来过滤rsModel中包含的数据。在sectionComboBox中,我显示了一个部分的名称,并希望将rsModel过滤为具有匹配SECTION_ID的条目

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

QLTableModel子类QSqlRelationalTableModel并实现setQLFilter

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

}

1 个答案:

答案 0 :(得分: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))
    }
}