QTableWidget 实现搜索功能

#include "stdafx.h"
#include "QtGuiApplication2.h"


QtGuiApplication2::QtGuiApplication2(QWidget *parent): QMainWindow(parent)
{
    ui.setupUi(this);
    timer_checkDev = new QTimer(this);
    connect(timer_checkDev, SIGNAL(timeout()), this, SLOT(checkDevNum()));
    timer_checkDev->start(1);
    initTab();
    connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(serchOpt()));
}

void QtGuiApplication2::serchOpt()
{
    QString text = ui.lineEdit->text();
    ScreenInfo(ui.tableWidget, text);
}

void QtGuiApplication2::initTab()
{
    ui.tableWidget->setColumnCount(2);
    QStringList header;
    header << QString::fromLocal8Bit("行政区编码") << QString::fromLocal8Bit("终端地址");
    ui.tableWidget->setHorizontalHeaderLabels(header);

    ui.tableWidget->setColumnWidth(0, 80);  //(*mod)->setColumnWidth(0,60);  
    ui.tableWidget->setColumnWidth(1, 60);
    ui.tableWidget->setRowCount(10);
    for (int i=0;i<10;i++)
    {
        ui.tableWidget->setItem(i, 0, new QTableWidgetItem(QString::fromLocal8Bit("%1").arg(i)));
    }
}

void QtGuiApplication2::ScreenInfo(QTableWidget *source, QString &text)
{
    int rC = source->rowCount();//获得行数
    if ("" == text) {//判断输入是否为空
        for (int i = 0; i < rC; i++) {
            source->setRowHidden(i, false);//显示所有行
        }
    }
    else {
        //获取符合条件的cell索引
        QList <QTableWidgetItem *> item = source->findItems(text, Qt::MatchContains);

        for (int i = 0; i < rC; i++) {
            source->setRowHidden(i, true);//隐藏所有行
        }

        if (!item.isEmpty()) { //不为空
            for (int i = 0; i < item.count(); i++) {
                source->setRowHidden(item.at(i)->row(), false);//item.at(i).row()输出行号
            }
        }
    }
}


 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Qt框架中的QTableWidget是一个用于显示表格数据的控件,它支持复杂的交互操作,包括搜索功能。要在QTableWidget实现搜索功能,你可以按照以下步骤操作: 1. **添加搜索栏**:首先,你需要创建一个LineEdit(文本输入框)作为搜索输入,用户可以在其中输入关键词。 ```cpp QLineEdit *searchBox = new QLineEdit(this); searchBox->setPlaceholderText("Search..."); ``` 2. **信号连接**:将搜索栏的textChanged()信号连接到处理搜索事件的槽函数上。 ```cpp connect(searchBox, &QLineEdit::textChanged, this, &YourClass::onSearchTextChanged); ``` 3. **处理搜索**:在`onSearchTextChanged()`槽函数中,遍历QTableWidget的数据,找到包含关键词的行并高亮显示。 ```cpp void YourClass::onSearchTextChanged(const QString &text) { auto model = yourTableWidget->model(); for (int row = 0; row < model->rowCount(); ++row) { if (model->data(model->index(row, COL_INDEX_TO_SEARCH), Qt::DisplayRole).toString().contains(text)) { yourTableWidget->selectRow(row); // 高亮显示行 } } } ``` 这里假设`yourTableWidget`是你的QTableWidget实例,并且`COL_INDEX_TO_SEARCH`是你想要搜索的具体列索引。 4. **样式设置**:为了美观,你可以调整选中行的样式,例如背景颜色。 ```cpp QTableWidgetSelectionRange range; range.setTop(row); range.setBottom(row + 1); yourTableWidget->setSelection(range); yourTableWidget->item(range.top(), COL_INDEX_TO_DISPLAY)->setBackground(QColor("#FFFF99")); // 示例黄色背景 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值