如何使用组合框文本仅显示QSqlTableModel中的特定行?

时间:2013-07-26 10:14:23

标签: qt qcombobox qsqltablemodel

我在Qt C ++中使用QSqlTableModel,我想只显示包含QComboBox中文本的行。例如,当我单击组合框中的“John”项时,表视图应该只显示以“John”开头的名称。我不知道该怎么做。

2 个答案:

答案 0 :(得分:2)

您需要的课程是QSortFilterProxyModel

不是直接显示QSqlTableModel,而是在模型和视图之间放置一个QSortFilterProxyModel:

QSortFilterProxyModel* proxyModel = new QSortFilterProxyModel( this );

proxyModel->setSourceModel( yourQSqlTableModel );

yourView->setModel( proxyModel );

然后,您可以对该模型进行排序或过滤(请查看顶部链接中的SortingFiltering部分。)

答案 1 :(得分:1)

顺便说一句,如果您可以通过SQL轻松提供过滤类型,则可以使用QSqlTableModel的setFilter()方法。