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();
}
運行界面