完成Header文件

textfinder.h 文件已经包含必要的#include、构造函数、析构函数和UI对象,您需要添加一个私有函数loadTextFile() 来读取和显示QTextEdit中输入文本文件的内容。

1. 在 Edit 视图的 Projects 视图中,双击 textfinder.h 文件将其打开来进行编辑。

2. 在 Ui::TextFinder 指针之后的私有部分中添加一个私有函数,如以下代码片段所示:

private slots:
void on_findButton_clicked();

private:
Ui::TextFinder *ui;
void loadTextFile();

完成源文件

现在header文件已经完成,转到源文件 textfinder.cpp。

1. 在Edit视图的Projects视图中,双击 textfinder.cpp 文件将其打开来进行编辑。

2. 添加代码来使用QFile 加载文本文件,使用 QTextStream 读取它,然后使用 QTextEdit::setPlainText() 在 textEdit 上显示它,以下代码片段说明了这一点:

void TextFinder::loadTextFile()
{
QFile inputFile(":/input.txt");
inputFile.open(QIODevice::ReadOnly);

QTextStream in(&inputFile);
QString line = in.readAll();
inputFile.close();

ui->textEdit->setPlainText(line);
QTextCursor cursor = ui->textEdit->textCursor();
cursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor, 1);
}

3. 要使用 QFile 和 QTextStream,请将以下 #includes 添加到 textfinder.cpp:

#include <QFile>
#include <QTextStream>

4. 对于 on_findButton_clicked() slot,添加代码来提取搜索字符串并使用QTextEdit::find() 函数在文本文件中查找搜索字符串,以下代码片段说明了这一点:

void TextFinder::on_findButton_clicked()
{
QString searchString = ui->lineEdit->text();
ui->textEdit->find(searchString, QTextDocument::FindWholeWords);
}

5. 完成这两个函数后,在构造函数中添加一行调用 loadTextFile(),如以下代码片段所示:

TextFinder::TextFinder(QWidget *parent)
: QWidget(parent), ui(new Ui::TextFinder)
{
ui->setupUi(this);
loadTextFile();
}

on_findButton_clicked() slot在 uic 生成的 ui_textfinder.h 文件中由这行代码自动调用:

QMetaObject::connectSlotsByName(TextFinder);