QtCreator 代理模型(QSortFilterProxyModel),數據窗口映射器(QDataWidgetMapper)

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();
}


運行界面



發佈了44 篇原創文章 · 獲贊 12 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章