QT基础知识

QT基础知识

文章目录

  • QT基础知识
    • 1、QT是什么
    • 2、Qt的发展史
    • 3、为什么学习QT
    • 4、怎么学习QT
      • 1、工程的创建(环境的下载与安装请百度)
      • 2、创建的工程结构说明
      • 3、怎么看帮助文档
        • 1、类使用的相关介绍
        • 2. 查看所用部件(类)的相应成员函数(功能,参数,返回值)
        • 3、查看部件的信号
        • 4、查看部件的事件(所对应的虚函数如何编写)
    • 5. 总结


1、QT是什么

Qt是一个跨平台C++图形用户界面应用程序框架。它为应用程序开发者提供建立艺术级图形界面所需的所有功能。它是完全面向对象的,很容易扩展,并且允许真正的组件编程。

2、Qt的发展史

1991年 Qt最早由奇趣科技开发
1996年 进入商业领域,它也是目前流行的Linux桌面环境KDE的基础
2008年 奇趣科技被诺基亚公司收购,Qt称为诺基亚旗下的编程语言
2012年 Qt又被Digia公司收购
2014年4月 跨平台的集成开发环境Qt Creator3.1.0发布,同年5月20日配发了Qt5.3正式版,至此Qt实现了对iOS、Android、WP等各平台的全面支持。

3、为什么学习QT

  1. 更好的学习C++
  2. 后台逻辑与前台界面的协调。
  3. 跨平台(比如需要做安卓与ios开发由于Qt的跨平台一个平台写好的程序另一个平台稍微修改就可以运行起来

4、怎么学习QT

借助Qt帮助文档(很重要)

1、工程的创建(环境的下载与安装请百度)

打开Qt Creator 界面选择 New Project或者选择菜单栏 【文件】-【新建文件或项目】菜单项
在这里插入图片描述
弹出New Project对话框,选择Qt Widgets Application,
在这里插入图片描述
选择【Choose】按钮,弹出如下对话框
路径不要包含中文在这里插入图片描述
设置项目名称和路径,按照向导进行下一步,
在这里插入图片描述
选择编译套件
在这里插入图片描述
基类选择有三种:
(1)QMainWindow 是主窗口类,主窗口具有主菜单栏、工具栏、状态栏,类似于一般的应用程序主窗口(就行Qt Creater的主窗口上的有编辑栏那种)
(2)QWidget 是所有具有可视化界面类的基类,选择QWidget 创建的界面对各种界面组件度都可以支持(反正我最喜欢用这个,一片空白随便搞)
(3)QDialog 是对话框类,可建立一个基于对话框的界面。

如果不需要ui 创建界面可以不勾选 一般都是要的。
在这里插入图片描述
即可创建出一个Qt桌面程序。

2、创建的工程结构说明

在这里插入图片描述
(1)test.pro 是项目管理文件,包括一些对项目的设置项,特别是后续开发中,需要设计添加模块的问题,就在 pro 文件中添加需要的模块;同时你打开Qt项目时也是选择这个。
(2)Header文件保存所有窗口类头文件的文件分组,mywidge.h
(3)Source 文件保存C++ 源码的文件分组。main.cpp是主函数文件,也是应用程序执行的入口
(4)Froms 文件分组是保存项目的所有界面文件(.ui),双击.ui文件可以进入界面编辑界面。

.pro 文件的说明
在这里插入图片描述
main.cpp 主程序
在这里插入图片描述mywidget .h 文件
在这里插入图片描述
(1)Q_OBJECT :使用了Q_OBJECT这个宏,这是使用Qt的信号与槽(signal与slot)机制的类都必须加入的宏
(2) Ui::Widget *ui 指针,是为了使用前面声明的namespace Ui里面的Widget类定义,这个很重要,在cpp中调用ui文件中的控件时,都是以ui开头指向你需要调用的控件
(3)class myWidget : public QWidget 这就说明,myWidget类是QWidget类的一个派生类。

mywidget.cpp 文件
在这里插入图片描述
(1)#include “ui_widget.h” 这个就是Qt编译生成的与UI文件 widget.ui 对应的类定义文件
(2) myWidget::myWidget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) 构造函数头部,
意义:执行父类QWidget 的构造函数,创建一个Ui::Widget 类的对象 ui 。这个ui 就是Widget 的private 中定义的指针变量 ui。(采用C++中的成员初始化列表语句)
(3)ui->setupUi(this) 执行Ui::Widget 类的setupUi函数,这个函数实现窗口的生成与各种属性的设置、信号与槽的关联,this指针指向定义的widget类
(4)析构函数就是删除用 new 创建的ui指针

3、怎么看帮助文档

学习图形界面开发,肯定离不开帮助文档的使用,因为它不像 C 语言那样就那么几个函数接口,图形接口的接口可以用海量来形容,常用的我们可能能记住,其它的真的没有必要去记,用到什么就去帮助文档查看用法。

我们使用 Qt 帮助文档,主要分为这么几步:
1)类使用的相关介绍
2)查看所用部件(类)的相应成员函数(功能,参数,返回值)
3)查看部件的信号
4)查看部件的事件(所对应的虚函数如何编写)

1、类使用的相关介绍

光标移动到类名字的地方,接着按“F1”即可跳转到所对应的帮助文件:
在这里插入图片描述再按一次“F1”即可全屏显示帮助文档页面,按“Esc”即可退出帮助文档。
类的相关介绍说明:
在这里插入图片描述
所要查看的几个重要信息:
在这里插入图片描述
公有成员函数:操作部件属性的相关函数。
公有槽函数:Qt类中已经定义好的槽函数,直接可与信号相连接。
信号:软中断,如按下按钮触发 pressed() 信号等。
保护成员函数:通常事件所对应的虚函数放在此处。
事件:常用事件,如操作鼠标触发的鼠标事件。

当然,我们可以直接在“帮助”模式下的“索引”输入框里输入所需查看的类:
在这里插入图片描述

2. 查看所用部件(类)的相应成员函数(功能,参数,返回值)

查看所用部件的相应成员函数( 本身的成员函数,继承过来的成员函数 ),主要是为了查看这个成员函数如何使
用,包括函数的功能,参数,返回值。
下面以 QPushButton (普通按钮)为例:
a)选择 QPushButton 类中的“公有函数”:
在这里插入图片描述
b)相应函数的简单介绍:
在这里插入图片描述
c)点击函数名字即可查看其相应用法:
在这里插入图片描述
d)很多时候,我们需要使用到继承过来的函数,如给按钮设置内容( setText() )即是从 QAbstractButton
继承过来:
在这里插入图片描述
点击“QAbstractButton”即可跳转到 QAbstractButton 公有函数的地方:
在这里插入图片描述
点击函数名字即可查看其用法:
在这里插入图片描述
e)操作过程中,可能需要用到“后退”、“前进”进行页面来回切换:
在这里插入图片描述
f)很多事情,我们可能需要在使用到某个函数时,再查看其用法。
首先,需要先把函数的参数随便拿个数填好,然后,光标移动到函数名字的地方,再按“F1”即可跳转到此
函数的使用说明:
在这里插入图片描述

3、查看部件的信号

还是以 QPushButton 为例:
a)在 QPushButton 类中不能直接查看 Signals 的信息,需要在其基类“QAbstractButton ”中查找:
在这里插入图片描述
b)在“QAbstractButton ”,选择“Signals”:
在这里插入图片描述
c)除了本身信号,还有继承过来的信号:
在这里插入图片描述
d)点击信号名字,即可查看信号的相关说明:
在这里插入图片描述

4、查看部件的事件(所对应的虚函数如何编写)

部件常用事件主要在 QWidget 中声明,选择“Events”即可查看相关说明:
在这里插入图片描述每个事件都对应着事件函数:
在这里插入图片描述
事件函数的相关说明:
在这里插入图片描述

5. 总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,一些Qt的介绍。QT工程的创建及简单工程的生成文档的说明。怎么看QT的帮助文档。

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

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

相关文章

为什么说 $mash 是 Solana 上最正统的铭文通证?

早在 2023 年的 11 月,包括 Solana、Avalanche、Polygon、Arbitrum、zkSync 等生态正在承接比特币铭文生态外溢的价值。当然,因铭文赛道过于火爆,当 Avalanche、BNB Chain 以及 Polygon 等链上 Gas 飙升至极值,Arbitrum、zkSync 等…

多任务并行处理相关面试题

我自己面试时被问过两次多任务并行相关的问题: 假设现在有10个任务,要求同时处理,并且必须所有任务全部完成才返回结果 这个面试题的难点是: 既然要同时处理,那么肯定要用多线程。怎么设计多线程同时处理任务呢&…

.babky勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复

导言: 网络安全威胁不断进化,其中.babky勒索病毒引起了广泛关注。这篇文章91数据恢复将深入介绍.babky的狡猾特征,以及在遭受其袭击时如何高效地恢复被加密的数据,并提供实用的预防方法。当面对被勒索病毒攻击导致的数据文件加密…

vue-vuex持久化处理

在src/utils文件夹下,创建storage.js文件 // 约定一个通用的键名 const INFO_KEY hm_shopping_info// 获取个人信息 export const getInfo () > {const defaultObj { token: , userId: }const result localStorage.getItem(INFO_KEY)return result ? JSON…

java多线程及线程锁

概述 程序(program):为完成特定任务,用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。 进程(process):程序的一次执行过程,或是正在内存中运行的应用程序…

什么是自动化测试?为啥要学自动化测试?

什么是自动化测试,接着对常用的自动化测试框架进行了对比分析,最后,介绍了如果将自动化测试框架Cypress运用在项目中。 一、自动化测试概述 为了保障软件质量,并减少重复性的测试工作,自动化测试已经被广泛运用。在开…

【LLM】大型语言模型综述论文

今天我将与大家分享一篇精彩的论文。这项调查提供了LLM文献的最新综述,这对研究人员和工程师来说都是一个有用的资源。 为什么选择LLM? 当参数尺度超过一定水平时,这些扩展的语言模型不仅实现了显著的性能改进,而且还表现出一些…

一份阅读量13万+免费的C#/.NET/.NET Core面试宝典(基础版)

前言 C#/.NET/.NET Core相关技术常见面试题汇总,不仅仅为了面试而学习,更多的是查漏补缺、扩充知识面和大家共同学习进步。该知识库主要由自己平时学习实践总结、网上优秀文章资料收集(这一部分会标注来源)和社区小伙伴提供三部分…

c++编程要养成的好习惯

1、缩进 你说有缩进看的清楚还是没缩进看的清楚 2、i和i i运行起来和i更快 3、 n%20和n&1 不要再用n%20来判断n是不是偶数了&#xff0c;又慢又土&#xff0c;用n&10&#xff0c;如果n&10就说明n是偶数 同理&#xff0c;n&11说明n是奇数 4、*2和<<…

【EI会议征稿通知】第三届工程管理与信息科学国际学术会议 (EMIS 2024)

第三届工程管理与信息科学国际学术会议 (EMIS 2024) 2024 3rd International Conference on Engineering Management and Information Science 【国际高级别专家出席/新加坡机器人学会支持】 第三届工程管理与信息科学国际学术会议 (EMIS 2024)将于2024年4月12-14日在中国洛…

设计模式:工厂方法模式(讲故事图文易懂)

目录 简单工厂工厂方法模式 简单工厂 定义&#xff1a;简单工厂由一个工厂根据参数类型决定创建哪种产品的实例。 简单工厂不包含在23种设计模式之内&#xff08;简单工厂不满足开闭原则&#xff0c;后面会详细讲&#xff09; 举例&#xff1a;张三去4S店买了车&#xff0c;显…

网页爬虫对于网络安全有哪些影响?

在当今信息爆炸的时代&#xff0c;网络已经成为人们获取信息、交流思想和开展业务的重要平台。然而&#xff0c;随着网络的普及和技术的不断发展&#xff0c;网络安全问题也日益凸显&#xff0c;其中网页爬虫对网络安全的影响不容忽视。本文将就网页爬虫对网络安全的影响进行深…

从不同应用,划片机主要包括如下几个方面

在半导体行业中&#xff0c;划片机被广泛应用于各种材料和应用的切割和加工。根据不同的应用&#xff0c;划片机主要可以分为以下几个方面&#xff1a; 一、半导体材料划片 半导体材料划片是划片机最早的应用领域之一。在这个领域中&#xff0c;划片机主要被用于将半导体材料&…

test ui-02-UI 测试组件之 Appium 入门介绍

Appium简介 正如主页所述&#xff0c;Appium的目标是支持许多不同平台&#xff08;移动、Web、桌面等&#xff09;的UI自动化。 不仅如此&#xff0c;它还旨在支持用不同语言&#xff08;JS、Java、Python等&#xff09;编写的自动化代码。 将所有这些功能组合到一个程序中是…

工程中uint8变量文件比uint32变量文件大4字节的问题排查

前言 &#xff08;1&#xff09;如果有嵌入式企业需要招聘湖南区域日常实习生&#xff0c;任何区域的暑假Linux驱动实习岗位&#xff0c;可C站直接私聊&#xff0c;或者邮件&#xff1a;zhangyixu02gmail.com&#xff0c;此消息至2025年1月1日前均有效 &#xff08;2&#xff0…

uniapp中组件库的Textarea 文本域的丰富使用方法

目录 #平台差异说明 #基本使用 #字数统计 #自动增高 #禁用状态 #下划线模式 #格式化处理 API #List Props #Methods #List Events 文本域此组件满足了可能出现的表单信息补充&#xff0c;编辑等实际逻辑的功能&#xff0c;内置了字数校验等 注意&#xff1a; 由于…

金和OA SAP_B1Config.aspx存在未授权访问漏洞

产品简介 金和网络是专业信息化服务商&#xff0c;为城市监管部门提供了互联网监管解决方案&#xff0c;为企事业单位提供组织协同OA系统升开发平台&#xff0c;电子政务一体化平台智慧电商平合等服务 漏洞概述 金和OA SAP_B1Config.aspx存在未授权访问漏洞&#xff0c;攻击…

Jenkins的Transfers路径怎么配置,解决Transfers配置不生效的问题

Transfers配置: 1.配置Source files: 要填写jar包的相对路径,从当前项目工作空间的根目录开始,看看我的工作空间你就懂了 !如图 我填的是 parent/build/libs/parent-1.0.0.jar,即不要 fdw1/ 的前缀 2.配置Remote directory: 远程目标文件夹,也就是你jar包要放到远程…

【LeetCode】每日一题 2023_12_31 一年中的第几天(日期)

文章目录 随便聊聊时间题目&#xff1a;一年中的第几天题目描述代码与解题思路 随便聊聊时间 LeetCode&#xff1f;启动&#xff01;&#xff01;&#xff01; 12 月的打卡勋章&#xff0c;get&#xff01; 题目&#xff1a;一年中的第几天 题目链接&#xff1a;1154. 一年中…

Nextjs打包类型检查报错ype error: Property ‘card_list‘ does not exist on type(已解决)

在Nextjs 中 在数组 map 的时候报错如下: 里面的数据类型是 data1 {cart_list:[]} 那么在 声明类型的时候 使用 data1:{card_list:any[]} export default function Card({authStates,data1,data2}:{authStates:boolean;data1:{card_list:any[]};data2:any[]}) {}) 这样就…