Qt:获取QTableView中的数据,进行搜索

1.创建QTableView内容

复制代码
QStandardItemModel *model = new  QStandardItemModel(ui->tableView);
// 四列
model->setHorizontalHeaderItem(0, new QStandardItem("1"));
model->setHorizontalHeaderItem(1, new QStandardItem("Name"));
model->setHorizontalHeaderItem(2, new QStandardItem("3"));
model->setHorizontalHeaderItem(3, new QStandardItem("4"));
// 三行
    model->setItem(0, 0, new QStandardItem("001"));
    model->setItem(0, 1, new QStandardItem("One"));
    model->setItem(0, 2, new QStandardItem("011"));
    model->setItem(0, 3, new QStandardItem("111"));

    model->setItem(1, 0, new QStandardItem("002"));
    model->setItem(1, 1, new QStandardItem("Two"));
    model->setItem(1, 2, new QStandardItem("122"));
    model->setItem(1, 3, new QStandardItem("222"));

    model->setItem(2, 0, new QStandardItem("003"));
    model->setItem(2, 1, new QStandardItem("Three"));
    model->setItem(2, 2, new QStandardItem("133"));
    model->setItem(2, 3, new QStandardItem("333"));
复制代码

2.获取根据第几列查询,并补全列表

    QSortFilterProxyModel *proxyModel = new QSortFilterProxyModel();
    proxyModel->setSourceModel(model);
    proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
    proxyModel->setFilterKeyColumn(1);  // 第二列,根据名字查找
    ui->tableView->setModel(proxyModel);

3.搜索框填写背景内容

    ui->lineEditSearch->setPlaceholderText("Search here...");

4.连接信号和槽

    QObject::connect(ui->lineEditSearch, &QLineEdit::textChanged, [=](const QString &text) {
        proxyModel->setFilterRegExp(QString(".*%1.*").arg(text));
    });

 

posted @   o·0  阅读(742)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示