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.hqwc.cn/news/69627.html

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

相关文章

java面试题(16):Mysql一致性视图是啥时候建立的

1 演示错误案例 先给大家来一个错误演示。 我们打开两个会话窗口&#xff0c;默认情况下隔离级别是可重复读&#xff0c;我们来看下&#xff1a; 首先在 A 会话中查看当前 user 表&#xff0c;查看完成后开启事务&#xff1a; 可以看到id3的数据sex是男。 接下来在 B 会话中…

阿里云服务器安装部署Docker使用教程

本文阿里云百科分享如何在云服务ECS实例上&#xff0c;部署并使用Docker。Docker是一款开源的应用容器引擎&#xff0c;具有可移植性、可扩展性、高安全性和可管理性等优势。开发者可将应用程序和依赖项打包到一个可移植的容器中&#xff0c;快速发布到Linux机器上并实现虚拟化…

div 中元素居中的N种常用方法

本文主要记录几种常用的div盒子水平垂直都居中的方法。本文主要参考了该篇博文并实践加以记录说明以加深理解记忆 css之div盒子居中常用方法大全 本文例子使用的 html body结构下的div 盒子模型如下&#xff1a; <body><div class"container"><div c…

Windows - UWP - 为UWP应用创建桌面快捷方式

Windows - UWP - 为UWP应用创建桌面快捷方式 前言 这是一个较为简单的方式&#xff0c;不需要过多的命令行。 How 首先Win R -> shell:AppsFolder -> 回车&#xff0c; 这将显示电脑上的已安装应用&#xff08;Win32 & UWP&#xff09;&#xff1a; 找到想要创建…

【CSS】禁用元素鼠标事件(例如实现元素禁用效果)

文章目录 基本用法 基本用法 pointer-events 属性指定在什么情况下 (如果有) 某个特定的图形元素可以成为鼠标事件。实际运用中可以通过对auto 和none动态控制&#xff0c;来动态实现元素的禁用效果。 属性描述auto与pointer-events属性未指定时的表现效果相同&#xff0c;对…

上山取石&#xff0c;下江取锦。诗人秋浦啸傲&#xff0c;新津樵唱。江南山水秀美&#xff0c;水乡文化流长。而水&#xff0c;则是这些山水风景的灵魂所在。 水&#xff0c;雨露滋润万物生长的泉源。 它潺潺流淌于山间溪涧&#xff0c;涓涓细流化成了青山的眼泪。水顺势而下&a…

Python学习笔记第五十七天(Pandas 数据清洗)

Python学习笔记第五十七天 Pandas 数据清洗Pandas 清洗空值isnull() Pandas替换单元格mean()median()mode() Pandas 清洗格式错误数据Pandas 清洗错误数据Pandas 清洗重复数据duplicated()drop_duplicates() 后记 Pandas 数据清洗 数据清洗是对一些没有用的数据进行处理的过程…

迭代器模式-遍历聚合对象中的元素

在开发中&#xff0c;我们经常使用到Iterator这个接口&#xff0c;我们很疑惑于这个接口的作用&#xff0c;认为集合已经实现了数据访问的方法&#xff0c;增加Iterator的意义在哪。本文我们将学习迭代器模式&#xff0c;用以探讨Iterator的作用。 1.1 迭代器模式概述 提供一…

一生一芯4——使用星火应用商店在ubuntu下载QQ、微信、百度网盘

星火应用商店可以非常方便的完成一些应用的下载&#xff0c;下面是官方网址 http://spark-app.store/download 我使用的是intel处理器&#xff0c;无需下载依赖项&#xff0c;直接点击软件本体 我这里下载amd64,根据自己的处理器下载对应版本 sudo apt install ./spark-stor…

【es6】函数柯里化(Currying)

柯里化&#xff08;Currying&#xff09;&#xff1a;把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数&#xff0c;并且返回接受余下的参数且返回结果的新函数。 柯里化由 Christopher Strachey 以逻辑学家 Haskell Curry 命名的&#xff0c;它是 Mos…

【Linux操作系统】举例解释Linux系统编程中文件io常用的函数

在Linux系统编程中&#xff0c;文件IO操作是非常常见和重要的操作之一。通过文件IO操作&#xff0c;我们可以打开、读取、写入和关闭文件&#xff0c;对文件进行定位、复制、删除和重命名等操作。本篇博客将介绍一些常用的文件IO操作函数。 文章目录 1. open()1.1 原型、参数及…

Linux 终端命令之文件浏览(2) more

Linux 文件浏览命令 cat, more, less, head, tail&#xff0c;此五个文件浏览类的命令皆为外部命令。 hannHannYang:~$ which cat /usr/bin/cat hannHannYang:~$ which more /usr/bin/more hannHannYang:~$ which less /usr/bin/less hannHannYang:~$ which head /usr/bin/he…