多表-连表筛选代码(其中一个view有两个表格tableView)

这是有三个按钮分表对应一个tableView,其中第一个是有两个tableView合成的,主要的功能是通过三张tableView的复选框,选中某一个或者多个,再由一个确定按钮来把三张表选中的选项拿出来,可能存在bug,还有功能不是很完善,也不是一个框架,只是供大家学习一下。但是接下来会继续修改。如果什么不好的地方,希望各位大神指点一下。谢谢大家的支持。

别说话–看图

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

demo在这里github
https://github.com/DaisukeZJY/FTYGroupTableView

以下是一个完整的例子,演示如何在Qt Creator 4.11版本中使用TableView并为每列表头添加筛选功能。 ``` #include <QApplication> #include <QStandardItemModel> #include <QTableView> #include <QHeaderView> #include <QSortFilterProxyModel> int main(int argc, char *argv[]) { QApplication app(argc, argv); // Create a standard item model and populate it with data QStandardItemModel *model = new QStandardItemModel(); model->setColumnCount(3); model->setHeaderData(0, Qt::Horizontal, "Name"); model->setHeaderData(1, Qt::Horizontal, "Age"); model->setHeaderData(2, Qt::Horizontal, "Gender"); QList<QStandardItem *> row1 = QList<QStandardItem *>() << new QStandardItem("John") << new QStandardItem("25") << new QStandardItem("Male"); QList<QStandardItem *> row2 = QList<QStandardItem *>() << new QStandardItem("Jane") << new QStandardItem("30") << new QStandardItem("Female"); QList<QStandardItem *> row3 = QList<QStandardItem *>() << new QStandardItem("Bob") << new QStandardItem("27") << new QStandardItem("Male"); model->appendRow(row1); model->appendRow(row2); model->appendRow(row3); // Create a table view and set the model QTableView *tableView = new QTableView(); tableView->setModel(model); // Enable sorting and filtering tableView->setSortingEnabled(true); tableView->setAlternatingRowColors(true); // Create a proxy model for filtering QSortFilterProxyModel *proxyModel = new QSortFilterProxyModel(); proxyModel->setSourceModel(model); tableView->setModel(proxyModel); // Set up the filter boxes for each column QHeaderView *header = tableView->horizontalHeader(); for (int i = 0; i < header->count(); i++) { QComboBox *comboBox = new QComboBox(); comboBox->setObjectName("filterBox"); header->setSectionWidget(i, comboBox); // Populate the filter box with unique values from the column QSet<QString> uniqueValues; for (int j = 0; j < model->rowCount(); j++) { uniqueValues.insert(model->index(j, i).data().toString()); } foreach (QString value, uniqueValues) { comboBox->addItem(value); } // Connect the signal to filter the proxy model QObject::connect(comboBox, static_cast<void(QComboBox::*)(int)>(&QComboBox::activated), [=](int index){ proxyModel->setFilterKeyColumn(i); proxyModel->setFilterRegExp(QRegExp(comboBox->currentText(), Qt::CaseInsensitive, QRegExp::FixedString)); }); } tableView->show(); return app.exec(); } ``` 在这个例子中,我们创建了一个包含三列数据的标准项模型,并为每列添加了表头。然后,我们使用这个模型创建了一个TableView,启用了排序和交替行颜色,并创建了一个QSortFilterProxyModel用于过滤。接下来,我们为每列表头创建了一个ComboBox,并将其添加到水平表头中。我们还从每列中提取了唯一值,并将其添加到过滤框中。最后,我们将每个ComboBox的activated信号连接到了一个lambda表达式中,该表达式设置了QSortFilterProxyModel的过滤器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值