C++QT教程3——手册4.11.1自带教程(笔记)——创建一个基于Qt Widget的应用程序

文章目录

创建一个基于Qt Widget的应用程序

本教程介绍如何使用Qt Creator创建一个小型Qt应用程序,名为Text Finder。它是Qt UI工具中Text Finder示例的简化版本。应用程序的用户界面是使用Qt Designer通过Qt小部件构建的。应用程序逻辑是通过使用代码编辑器编写的C++代码。

创建Text Finder项目

  1. 选择文件 > 新建文件或项目 > 应用程序 > Qt Widgets应用程序 > 选择。

    打开介绍和项目位置对话框。

  2. 在名称字段中,输入TextFinder。

  3. 在创建位置字段中,输入项目文件的路径。例如,C:\Qt\examples,然后点击下一步(在Windows和Linux上)或继续(在macOS上)。

    打开套件选择对话框。

  4. 选择您的项目的构建和运行套件,然后点击下一步或继续。

    注意:如果在工具 > 选项 > 套件(在Windows和Linux上)或Qt Creator > 首选项 >

    套件(在macOS上)中只指定了一个套件,则会跳过此对话框。

    打开类信息对话框。

  5. 在类名字段中,输入TextFinder作为类名。

  6. 在基类列表中,选择QWidget作为基类类型。

    注意:头文件、源文件和表单文件字段会自动更新以匹配类的名称。

  7. 点击下一步或继续。

    打开项目管理对话框。

  8. 查看项目设置,并点击完成(在Windows和Linux上)或完成(在macOS上)创建项目。

    注意:项目将以编辑模式打开,并隐藏这些说明。要返回到这些说明,请打开帮助模式。

素材文件

TextFinder项目现在包含以下文件:

.h.cpp文件包含了必要的样板代码。.pro文件是完整的。

填补缺失的部分

首先设计用户界面,然后继续填写缺失的代码。最后,添加查找功能。

设计用户界面

  1. 在"项目"视图中以编辑器模式双击打开textfinder.ui文件,启动集成的Qt Designer。
  2. 将以下小部件拖放到表单中:
  • 标签(QLabel)

  • 文本编辑框(QLineEdit)

  • 按钮(QPushButton)

    请注意:要轻松定位小部件,请使用侧边栏顶部的搜索框。例如,要找到标签小部件,开始键入"label"即可。

  1. 双击标签小部件,输入关键词文本。

  2. 双击按钮小部件,输入查找文本。

  3. 在属性窗格中,将对象名称更改为findButton。

  4. 按下Ctrl+A(或Cmd+A)选择小部件,点击水平布局(或在Linux或Windows上按Ctrl+H,或在macOS上按Ctrl+Shift+H)应用水平布局(QHBoxLayout)。

  5. 拖放一个文本编辑框小部件(QTextEdit)到表单中。

  6. 选择屏幕区域,点击垂直布局(或按Ctrl+L)应用垂直布局(QVBoxLayout)。

    应用水平和垂直布局确保应用程序界面适应不同的屏幕尺寸。

  7. 要在用户按下查找按钮时调用查找函数,可以使用Qt的信号和槽机制。当特定事件发生时,会发出一个信号,而槽是响应特定信号的函数。Qt小部件具有预定义的信号和槽,可以直接在Qt Designer中使用。要为查找函数添加一个槽:

    • 右键点击查找按钮以打开上下文菜单。
    • 选择"转到槽"> "clicked()",然后选择"确定"。
      会在头文件textfinder.h中添加一个私有槽on_findButton_clicked(),并在源文件textfinder.cpp中添加一个私有函数TextFinder::on_findButton_clicked()。
  8. 按下Ctrl+S(或Cmd+S)保存更改。

有关使用Qt Designer设计表单的更多信息,请参阅Qt Designer手册。

完成头文件

textfinder.h文件已经有必要的#include,一个构造函数,一个析构函数和Ui对象。你需要添加一个私有函数loadTextFile(),以读取并显示输入文本文件的内容在QTextEdit中。

  1. 在编辑视图的项目窗格中,双击打开textfinder.h文件进行编辑。

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

    python 复制代码
      private slots:
          void on_findButton_clicked();
    
      private:
          Ui::TextFinder *ui;
          void loadTextFile();

完成源文件

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

  1. 在编辑视图的项目窗格中,双击打开textfinder.cpp文件进行编辑。

  2. 添加代码使用QFile加载文本文件,用QTextStream读取,并使用QTextEdit::setPlainText()在textEdit中显示它。如下代码片段所示:

    python 复制代码
      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,在textfinder.cpp中添加以下#include:

    python 复制代码
      #include <QFile>
      #include <QTextStream>
  4. 对于on_findButton_clicked()槽函数,添加代码提取搜索字符串,并使用QTextEdit::find()函数在文本文件中查找该字符串。如下代码片段所示:

void TextFinder::on_findButton_clicked()

{

QString searchString = ui->lineEdit->text();

ui->textEdit->find(searchString, QTextDocument::FindWholeWords);

}

  1. 一旦这两个函数都完成了,在构造函数中添加一行调用loadTextFile()的代码,如下代码片段所示:

    python 复制代码
      TextFinder::TextFinder(QWidget *parent)
          : QWidget(parent), ui(new Ui::TextFinder)
      {
          ui->setupUi(this);
          loadTextFile();
      }

通过这行代码,在uic生成的ui_textfinder.h文件中会自动调用on_findButton_clicked()槽函数:

python 复制代码
  QMetaObject::connectSlotsByName(TextFinder);

创建资源文件

你需要一个资源文件(.qrc),其中嵌入输入文本文件。输入文件可以是任何带有文本段落的.txt文件。创建一个名为input.txt的文本文件,并将其存储在textfinder文件夹中。

添加资源文件的步骤:

  1. 选择文件 > 新建文件或项目 > Qt > Qt资源文件 > 选择。

    打开"选择位置"对话框。

  2. 在名称字段中输入textfinder。

  3. 在路径字段中,输入C:\Qt\examples\TextFinder,然后点击下一步或继续。

    打开"项目管理"对话框。

  4. 在"添加到项目"字段中,选择TextFinder.pro,然后点击完成或完成以在代码编辑器中打开该文件。

  5. 选择添加 > 添加前缀。

  6. 在前缀字段中,将默认前缀替换为斜杠(/)。

  7. 选择添加 > 添加文件,以定位并添加input.txt。

编译和运行程序

现在你已经拥有了所有必要的文件,点击按钮来编译和运行你的程序。

参考文章

【Qt】Qt创建Qt Qt Widgets项目

用户界面开发框架Qt 6.x入门级教程 - 创建基于Qt Widget的应用(一)

相关推荐
汇能感知2 小时前
摄像头模块在运动相机中的特殊应用
经验分享·笔记·科技
疾风铸境2 小时前
qt+halcon开发相机拍照软件步骤
数码相机·qt·halcon·拍照
阿巴Jun3 小时前
【数学】线性代数知识点总结
笔记·线性代数·矩阵
茯苓gao3 小时前
STM32G4 速度环开环,电流环闭环 IF模式建模
笔记·stm32·单片机·嵌入式硬件·学习
是誰萆微了承諾3 小时前
【golang学习笔记 gin 】1.2 redis 的使用
笔记·学习·golang
抠脚学代码3 小时前
Ubuntu Qt x64平台搭建 arm64 编译套件
数据库·qt·ubuntu
利刃大大3 小时前
【高并发内存池】五、页缓存的设计
c++·缓存·项目·内存池
DKPT4 小时前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习
ST.J4 小时前
前端笔记2025
前端·javascript·css·vue.js·笔记
C语言小火车4 小时前
【C++八股文】基础知识篇
c++·tcp/ip·const·智能指针·多线程同步·static关键字·c++内存模型