要实现在 QLineEdit 中进行模糊查找,通常需要一个数据源,如一个字符串列表或一个数据库,然后根据用户输入的文本进行匹配并过滤显示结果。以下是一个示例,演示如何实现在 QLineEdit 中进行模糊查找:

首先,创建一个 QLineEdit 和一个用于显示结果的列表部件(例如 QListWidget):

#include <QApplication>
#include <QLineEdit>
#include <QListWidget>
#include <QVBoxLayout>
#include <QWidget>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QWidget window;
    QVBoxLayout layout(&window);

    QLineEdit lineEdit;
    QListWidget listWidget;

    layout.addWidget(&lineEdit);
    layout.addWidget(&listWidget);

    window.show();

    // 在这里,你需要将数据源的内容添加到 listWidget 中,以供模糊查找
    // 例如,你可以使用 listWidget.addItem(item) 来添加每个项目到列表中

    return app.exec();
}

接下来,连接 QLineEdittextChanged 信号到一个槽函数,该槽函数将根据用户输入的文本来进行模糊查找和过滤结果。在这个槽函数中,你可以使用 QListWidgetclear 方法来清空列表,然后根据输入的文本筛选出匹配的项并将它们添加到列表中。

// 在你的类中定义一个槽函数,用于处理文本变化事件
void YourClass::onTextChanged(const QString &text) {
    // 清空列表
    listWidget->clear();

    // 从数据源中筛选匹配的项并添加到列表
    for (int i = 0; i < data.size(); ++i) {
        if (data.at(i).contains(text, Qt::CaseInsensitive)) {
            QListWidgetItem *item = new QListWidgetItem(data.at(i));
            listWidget->addItem(item);
        }
    }
}

在上述示例中,data 是你的数据源,包含要进行模糊查找的项。在槽函数 onTextChanged 中,我们清空了列表部件并遍历数据源,查找包含用户输入文本的项,并将匹配的项添加到列表中。contains 方法用于检查文本是否包含用户输入的文本,而 Qt::CaseInsensitive 参数表示不区分大小写进行匹配。

最后,连接 QLineEdittextChanged 信号到上述槽函数:

connect(&lineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(onTextChanged(const QString &)));

现在,当用户在 QLineEdit 中输入文本时,列表部件将根据输入的文本进行模糊查找并实时显示匹配的结果。你可以进一步扩展这个示例以满足你的应用程序需求,例如添加点击结果项后执行的操作等。