一、基本概念
代理模型可以将一个模型中的数据进行排序或者过滤,然后提供给视图进行显示。
Qt中提供了QSortFilterProxyModel
作为标准的代理模型来完成模型中数据的排序和过滤。
要使用一个代理模型,则只需要为其设置源模型,然后再视图中使用该代理模型即可。
二、代码示例
#include <QStringListModel>
#include <QSortFilterPoxyModel>
//在构造函数添加以下代码
{
QStringList list;
list << "yafei" << "yafeilinux" << "Qt" << "Qt Creator";
QStringListModel * listModel = new QStringListModel(list, this);
filterModel = new QSortFilterProxyModel(this);
//为代理模型添加源模型
filterModel->setSourceModel(listModel);
//在视图中使用代理模型
ui->listView->setModel(filterModel);
}
当想要过滤时,比如单击某按钮:
void MainWindow:onPushButtonClicked()
{
QRegExp rx(ui->lineEdit->text());
filterModel->setFilterRegExp(rx);
}
这里使用了行编辑器中的文本作为正则表达式。
参考资料:Qt Creator快速入门第2版 (霍亚飞 著)