本教程介绍如何使用Qt Creator创建一个小型Qt应用程序Text Finder。它是Qt UI工具文本查找器示例的简化版本。应用程序用户界面是使用UI设计器从Qt小部件构建的,应用逻辑使用代码编译器以C++方式编写
打开了Introduction and Project Location对话框
注意:会自动更新标题文件、源文件和窗体文件字段以匹配类的名称。
注意:项目在编辑模式下打开,这些说明被隐藏起来。要返回到这些说明,请打开"帮助"模式。
文本查找器项目现在包含以下文件:
首先设计用户界面,然后继续填写缺失的代码。最后,添加查找功能。
双击Label小部件并输入文件 keyword。
双击Push Button小部件然后输入文本 Find
按Ctrl+A(或Cmd+A)选择小部件,并选择水平布局(或在 Linux 或 Windows 上按Ctrl+H,或在 macOS 上按 Ctrl+Shift+H),应用水平布局(QHBoxLayout)。
将Text Edit小部件(QTextEdit)拖放到表单中。
选择屏幕区域,然后选择“垂直布局”(或按Ctrl+L)以应用垂直布局(QVBoxLayout)
应用水平布局和垂直布局可确保应用 UI 缩放到不同的屏幕尺寸。
要在用户选择find按钮时调用find函数,可以使用Qt信号和插槽机制。当特定事件发生时,会发出信号,插槽是响应特定信号时调用的函数。Qt小部件有预定义的信号和插槽,您可以直接从Qt designer使用,要为查找功能添加插槽:
(1)右键单击find按钮以打开上下文菜单
(2)选择Go to Slot > clicked(),然后选择ok
一个私有插槽,on_findButton_clicked()被添加到头文件textfinde.h,一个私有函数,TextFinder::on_findButton_clicked()被
按Ctrl+S (或Cmd+S)以保存您的更改。
有关使用Qt Designer设计Form的更多信息,请参阅Qt Designer手册。
textfinder.h文件已经包含必要的#includes、构造函数、析构函数和Ui对象。您需要添加一个私有函数loadTextFile(),以读取和显示QTextEdit中输入文本文件的内容。
textfind.h
文件以打开它进行编辑private
部分也就是Ui::TextFinder
后面添加一个私有函数,如下代码片段所示:private slots:
void on_findButton_clicked();
private:
Ui::TextFinder *ui;
void loadTextFile();
现在头文件已经完成了,请转到源文件textfinder.cpp
textfind.cpp
文件以打开它进行编辑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);
}
QFile
和QTextStream
,请在textfinder.cpp
中添加下面的#include#include
#include
on_findButton_clicked()
插槽,添加代码以提取搜索字符串,并使用QTextEdit::find
函数在文本文件中查找搜索字符串。下面的代码片段说明了这一点:void TextFinder::on_findButton_clicked()
{
QString searchString = ui->lineEdit->text();
ui->textEdit->find(searchString, QTextDocument::FindWholeWords);
}
TextFinder::TextFinder(QWidget *parent)
: QWidget(parent), ui(new Ui::TextFinder)
{
ui->setupUi(this);
loadTextFile();
}
在uic生成的ui_textfinder.h
文件,通过下面代码行自动调用on_findButton_clicked()
插槽
QMetaObject::connectSlotsByName(TextFinder);
您需要一个资源文件(.qrc),在其中嵌入输入文本文件。输入文件可以是任何带有一段文本的.txt文件。创建一个名为输入.txt并将其存储在textfinder文件夹中。
要添加资源文件:
选择File > New File or Project > Qt > Qt Resource File > Choose.
打开了一个”文章位置“对话框
选择下一步,打开了一个**项目管理(Project Management)**对话
现在,您拥有所有必要的文件,请选择按钮来编译和运行您的程序。