QSortFilterProxyModel和插槽setFilterFixedString

时间:2013-11-28 08:06:15

标签: c++ qt

我目前有一个搜索按钮,我想搜索我的模型的特定列。因此我只想在我的tableview中显示匹配的行。 我已将QSortFilterProxyModel *对象作为源附加到表视图,并已将QStandardItemModel *设置为其源。然后使用我的搜索按钮,我进行了以下连接

QObject::connect(ui.lineEditSearch,SIGNAL(textChanged(QString)),proxyModelFilter,SLOT(setFilterFixedString(QString)));

现在我的印象是,在输入时会返回相关的行。然后我意识到我没有指定我希望过滤器代理模型搜索哪些列。 我知道我可以实现一个继承自QSortFilterProxyModel的类并重新实现其filterAcceptsRow。我想知道是否有一种方法可以避免创建一个继承自QSortFilterProxyModel的类,只是简单地使用QSortFilterProxyModel类来告诉调用Slot setFilterFixedString时要搜索哪些列?

1 个答案:

答案 0 :(得分:2)

可以通过QSortFilterProxyModel::filterKeyColumn设置要过滤的列。 它允许指定单个列或全部(-1,默认值)。

或者,可以定义自定义过滤器角色,返回要搜索的所有字符串的串联,并通过setFilterRole()进行设置。