1 代理模型
1.1 在界面文件中添加代理模型
1.1.1 前置声明
class QSortFilterProxyModel;1.1.2 添加QSortFilterProxyModel私有变量
QSortFilterProxyModel *filterModel;1.1.3 在界面文件中为视图设置代理模型
//准备源模型
QStringList list;
list << "yafei" << "yafeilinux" << "qt" << "qt Creato";
QStringListModel *listModel = new QStringListModel(list,this);
//为代理添加源模型
filterModel = new QSortFilterProxyModel(this);
filterModel->setSourceModel(listModel);
//在视图中使用代理模型
ui->listView->setModel(filterModel);1.1.4 为按钮设置过滤功能
void MainWindow::on_pushButton_clicked()
{
QRegExp rx(ui->lineEdit->text());
filterModel->setFilterRegExp(rx);
}
2 数据——窗口映射器
2.1 在界面头文件中
在界面中添加映射器
class QDataWidgetMapper;
QDataWidgetMapper *mapper;
在界面实现文件cpp中构造函数中
QStandardItemModel *model = new QStandardItemModel(3,2);
model->setItem(0,0, new QStandardItem("xiaoming"));
model->setItem(0,1,new QStandardItem("90"));
model->setItem(1,0,new QStandardItem("xiaoqiang"));
model->setItem(1,1,new QStandardItem("75"));
model->setItem(2,0,new QStandardItem("xiaohong"));
model->setItem(2,1,new QStandardItem("80"));
mapper = new QDataWidgetMapper(this);
//设置模型
mapper->setModel(model);
//设置窗口部件和模型的列的映射
mapper->addMapping(ui->uLineEdit,0);
mapper->addMapping(ui->gLineEdit,1);
mapper->toFirst();//显示第一行为按钮添加功能
void MainWindow::on_pushButton_clicked()
{
mapper->toPrevious();
}
void MainWindow::on_pushButton_2_clicked()
{
mapper->toNext();
}
运行界面

本文介绍如何在Qt中使用QSortFilterProxyModel作为代理模型进行数据过滤,并展示了QDataWidgetMapper的应用,用于实现界面元素与数据模型之间的双向绑定。
8610

被折叠的 条评论
为什么被折叠?



