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

文章目录

  • 创建一个基于Qt Widget的应用程序
    • 创建Text Finder项目
      • 素材文件
    • 填补缺失的部分
      • 设计用户界面
      • 完成头文件
      • 完成源文件
      • 创建资源文件
    • 编译和运行程序
  • 参考文章

创建一个基于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项目现在包含以下文件:

  • textfinder.h
  • textfinder.cpp
  • main.cpp
  • textfinder.ui
  • textfinder.pro
    在这里插入图片描述

.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指针后面,如下代码片段所示:

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

完成源文件

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

  1. 在编辑视图的项目窗格中,双击打开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,在textfinder.cpp中添加以下#include:

      #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()的代码,如下代码片段所示:

      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文件。创建一个名为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的应用(一)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/35947.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑IP地址错误无法上网怎么办?

电脑出现IP地址错误后就将无法连接网络&#xff0c;从而无法正常访问互联网。那么当电脑出现IP地址错误时该怎么办呢&#xff1f; 确认是否禁用本地连接 你需要先确定是否禁用了本地网络连接&#xff0c;如果发现禁用&#xff0c;则将其启用即可。 启用方法&#xff1a;点击桌…

Spring 使用注解开发、代理模式、AOP

使用注解开发 在Spring4之后&#xff0c;要使用注解开发&#xff0c;必须要保证AOP的包导入了 项目搭建&#xff1a; 在配置文件中导入约束&#xff0c;增加注解支持 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.spri…

uniapp把城市换成26个字母和城市排序

后端返回的数据 我们要得效果 <template><view><view v-for"(value,key) in cities" :key"key"><view style"color: red;"> {{ key }} </view><view style"border: 1rpx solid black;"><tex…

PostgreSql 备份恢复

一、概述 数据库备份一般可分为物理备份和逻辑备份&#xff0c;其中物理备份又可分为物理冷备和物理热备&#xff0c;下面就各种备份方式进行详细说明&#xff08;一般情况下&#xff0c;生产环境采取的定时物理热备逻辑备份的方式&#xff0c;均是以下述方式为基础进一步研发编…

Linux 基础

巩固基础&#xff0c;砥砺前行 。 只有不断重复&#xff0c;才能做到超越自己。 能坚持把简单的事情做到极致&#xff0c;也是不容易的。 linux的目录结构 linux的文件系统采用树状的目录结构&#xff0c;在此结构的最上层是根目录“/”&#xff0c; 然后在此目录下再创建其他…

【算法——双指针】LeetCode 1089 复写零

千万不要被这道题标注着“简单”迷惑了&#xff0c;实际上需要注意的细节很多。 题目描述&#xff1a; 解题思路&#xff1a; 正序遍历&#xff0c;确定结果数组的最后一个元素所在的位置&#xff1b;知道最后一个元素的位置后倒序进行填充。 先找到最后一个需要复写的数 先…

javaee dom4j读取xml文件

引入jar包 dom4j-1.6.1.jar 创建xml文件 <?xml version"1.0" encoding"UTF-8"?> <books><book id"1"><title ID"t1">背影</title><price>88</price><author>三毛</author>…

Excel表格制作,快速提升效率好方法!

“作为一个刚开始工作的职场新人&#xff0c;每天要做各种不同的表格&#xff0c;真的让我很崩溃&#xff0c;感觉我对这些表格制作一点都不了解&#xff0c;Excel表格制作有什么比较好的方法吗&#xff1f;” Excel作为一款广泛应用于各个领域的管理和分析工作&#xff0c;给我…

【STM32】FreeRTOS消息队列和信号量学习

一、消息队列&#xff08;queue&#xff09; 队列是一种用于实现任务与任务之间&#xff0c;任务与中断之间消息交流的机制。 注意&#xff1a;1.数据的操作是FIFO模式。 2.队列需要明确数据的大小和队列的长度。 3.写和读都会出现堵塞。 实验&#xff1a;创建一个消息队列…

qt5.15.2 使用mysql8.1

报错&#xff1a; QMYSQL driver not loaded 报错&#xff1a;无 QMYSQL 使用 QStringList drivers QSqlDatabase::drivers(); //获取现在可用的数据库驱动 foreach(QString driver, drivers) qDebug() << driver; “QSQLITE” “QMARIADB” “QMYSQL” “QMYSQL3” “…

Linux常用命令——dmidecode命令

在线Linux命令查询工具 dmidecode 在Linux系统下获取有关硬件方面的信息 补充说明 dmidecode命令可以让你在Linux系统下获取有关硬件方面的信息。dmidecode的作用是将DMI数据库中的信息解码&#xff0c;以可读的文本方式显示。由于DMI信息可以人为修改&#xff0c;因此里面…

网络编程的使用

文章目录 基础代码URL类进行传输编码解码 协议TCPUDPhttp PORT端口协议的实现TCPUDP 模拟服务器 基础代码 最后一个是&#xff1a;只要再timeout时间内连接上就是true URL类 导了一个common-iojar包&#xff0c;那个IOUtils就是那个里面的工具类 进行传输编码解码 协议 TC…

【Spring Cloud +Vue+UniApp】智慧建筑工地平台源码

智慧工地源码 、智慧工地云平台源码、 智慧建筑源码支持私有化部署&#xff0c;提供SaaS硬件设备运维全套服务。 前言&#xff1a;互联网建筑工地&#xff0c;是将互联网的理念和技术引入建筑工地&#xff0c;从施工现场源头抓起&#xff0c;最大程度的收集人员、安全、环境、材…

微信小程序调用map数据 并在wxml中对数组进行截取的操作

wxs文件的位置如图 实现数组截取 只保留五张图片 <wxs module"filter" src"./slicefunc.wxs"></wxs> <view class"wrap"><view class"search-box" bindtap"toSearch"><view class"v1"…

【几个python虚拟环境会遇到的问题】

几个python虚拟环境会遇到的问题 twine is not recognized as an internal or external command,operable program or batch file.setup命令不报错但不起作用pipreqs is not recognized as an internal or external command,operable program or batch file. ‘twine’ is not …

快递管理系统springboot 寄件物流仓库java jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 快递管理系统springboot 系统有1权限&#xff1a;管…

11. Docker Swarm(二)

1、前言 上一篇中我们利用Docker Swarm搭建了基础的集群环境。那么今天我们就来验证以下该集群的可用性。上一篇的示例中&#xff0c;我创建了3个实例副本&#xff0c;并且通过访问http://192.168.74.132:8080得到我们的页面。 2、验证高可用 1&#xff09;我们可以通过以下命…

13个顶级AI代码助手排行榜【2023最新】

AI代码助手&#xff08;AI Coding Assistant&#xff09;是一种利用人工智能帮助开发人员更快、更准确地编写代码的软件工具。 它可以通过根据提示生成代码或在你实时编写代码时建议自动完成代码来实现此目的。 以下是AI代码助手可以做的一些事情&#xff1a; 与你使用的流行代…

YOLOv5可视化界面

Pyside6可视化界面 安装Pyside6 激活之前的虚拟环境yolov5 在该环境的终端输入以下命令 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyside6输入where python找到当前使用的Python的路径 找到该路径下的designer.exe文件&#xff08;/Lib/site-packages/PySi…

布置Zabbix监控

一、在 Web 页面中添加 agent 主机 1.1打开Zabbix的Web页面 2.2在 Web 页面中添加 agent 主机 二、在 Web 页面创建自定义监控项模板 2.1创建模版