qt create C++ tablewidget 基于指定一列搜索字段
时间: 2023-11-26 15:06:46 浏览: 71
以下是一个基于指定一列搜索字段的C++示例代码:
```cpp
#include <QApplication>
#include <QWidget>
#include <QTableWidget>
#include <QTableWidgetItem>
#include <QLineEdit>
#include <QPushButton>
class Example : public QWidget {
public:
Example() {
// 创建一个QTableWidget
table = new QTableWidget(this);
table->setGeometry(50, 50, 400, 300);
table->setColumnCount(3);
table->setHorizontalHeaderLabels({"Name", "Age", "Gender"});
table->setRowCount(5);
// 添加一些数据
table->setItem(0, 0, new QTableWidgetItem("John"));
table->setItem(0, 1, new QTableWidgetItem("30"));
table->setItem(0, 2, new QTableWidgetItem("Male"));
table->setItem(1, 0, new QTableWidgetItem("Lisa"));
table->setItem(1, 1, new QTableWidgetItem("25"));
table->setItem(1, 2, new QTableWidgetItem("Female"));
table->setItem(2, 0, new QTableWidgetItem("Bob"));
table->setItem(2, 1, new QTableWidgetItem("40"));
table->setItem(2, 2, new QTableWidgetItem("Male"));
table->setItem(3, 0, new QTableWidgetItem("Mary"));
table->setItem(3, 1, new QTableWidgetItem("35"));
table->setItem(3, 2, new QTableWidgetItem("Female"));
table->setItem(4, 0, new QTableWidgetItem("David"));
table->setItem(4, 1, new QTableWidgetItem("28"));
table->setItem(4, 2, new QTableWidgetItem("Male"));
// 创建一个搜索框和搜索按钮
search_box = new QLineEdit(this);
search_box->setGeometry(50, 10, 200, 30);
search_button = new QPushButton("Search", this);
search_button->setGeometry(260, 10, 80, 30);
connect(search_button, &QPushButton::clicked, this, &Example::search);
show();
}
private:
QTableWidget* table;
QLineEdit* search_box;
QPushButton* search_button;
void search() {
// 获取搜索字段
QString keyword = search_box->text().toLower();
// 获取需要搜索的列
int search_col = 0; // 假设我们需要基于第一列进行搜索
// 遍历每一行并检查是否匹配搜索字段
for (int row = 0; row < table->rowCount(); row++) {
QTableWidgetItem* item = table->item(row, search_col);
if (item->text().toLower().startsWith(keyword)) {
// 如果该行存在匹配项,就显示该行
table->setRowHidden(row, false);
} else {
// 如果该行没有匹配项,就隐藏该行
table->setRowHidden(row, true);
}
}
}
};
int main(int argc, char* argv[]) {
QApplication app(argc, argv);
Example ex;
return app.exec();
}
```
在这个示例中,我们创建了一个包含5行3列数据的QTableWidget,并添加了一个搜索框和搜索按钮。当用户在搜索框中输入关键字并点击搜索按钮时,程序将会遍历每一行并检查指定列是否存在与搜索字段匹配的项。如果没有匹配项,就隐藏该行。在本示例中,我们假设需要基于第一列进行搜索,可以通过修改`search_col`变量来指定需要搜索的列。
阅读全文