Qt简介、C++工程文件分离、创建Qt工程、Qt的帮助文档

QT 简介

在这里插入图片描述

core:核心模块,非图形的接口类,为其它模块提供支持
gui:图形用户接口,qt5之前
widgets:图形界面相关的类模块 qt5之后的
database:数据库模块
network:网络模块

QT 特性

开源

(裁剪、参考代码、学习)
优良的跨平台特性
Qt 支持下列操作系统:Windows、Linux、MacOS、android 等等。节约人力成本。
类比 Linux 支持 intel X86、ARM、MIPS 等。

面向对象

Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。Qt 提供了一种称为 signals/slots 的安全类型来替代 callback,这使得各个元件之间的协同工作变得十分简单。

丰富的API

Qt 包括多达 500 个以上的 C++类,还替供基于模板的 collections,serialization,file,I/O device,directory management,date/time 类。甚至还包括正则表达式的处理功能。

大量的开发文档

易用的开发环境

Qt 嵌入式官方案例(👈 安全链接,放心跳转)

Qt 环境安装、搭建

下载

(👆 Qt Creator下载页面)

windows 版本选择 mingw 版本,集成安装包,只安装 mingw 编译器即可。
linux 的包以 run 后缀结尾。
mac 的包以 dmg 后缀结尾。

在这里插入图片描述

版本查看

Qt creator 软件的版本:3.0.1
SDK的版本:5.2.1
在这里插入图片描述

编码格式

需要改回 utf-8,否则会导致界面中文显示不正常。
在这里插入图片描述

C++工程文件分离

写一个 Person 类,有 name 和 age 两个成员,构造方法中赋默认属性,再提供对外的方法进行设置和输出。
写一个 Student 类,继承自 Person 类,增加学号 id 和成绩 score 两个属性,并能提供方法来设置这两个属性。构造方法中要能设置默认的所有属性。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

person.h

#ifndef PERSON_H
#define PERSON_H

#include <iostream>
using namespace std;

class Person
{
protected:
    string name;
    int age;
public:
    Person();
    void setProperty(string name, int age);
    virtual void getProperty();
};

#endif // PERSON_H

person.cpp

#include "person.h"

Person::Person()
{
    name = "Klaus";
    age = 23;
}

void Person::setProperty(string name, int age)
{
    this->name = name;
    this->age = age;
}

void Person::getProperty()
{
    cout << "Name: " << name << endl;
    cout << "Age: " << age << endl;
}

student.h

#ifndef STUDENT_H
#define STUDENT_H

#include "person.h"

class Student : public Person
{
    string id;
    float score;
public:
    Student();
    void setProperty(string name, int age, string id, float score);
    virtual void getProperty();
};

#endif // STUDENT_H

student.cpp

#include "student.h"

Student::Student()
{
    id = "2023052106";
    score = 92;
}

void Student::setProperty(string name, int age, string id, float score)
{
    this->name = name;
    this->age = age;
    this->id = id;
    this->score = score;
}

void Student::getProperty()
{
    cout << "Name: " << name << endl;
    cout << "Age: " << age << endl;
    cout << "Id: " << id << endl;
    cout << "Score: " << score << endl;
}

main.cpp

#include "student.h"

int main()
{
    Person().getProperty();
    Person per;
    per.setProperty("Kol", 21);
    per.getProperty();
    cout << "--------------------" << endl;

    Student().getProperty();
    Student *stu = new Student;
    stu->setProperty("Kol", 21, "2023052202", 96);
    stu->getProperty();
    cout << "--------------------" << endl;

    // 多态:父类的指针或者引用指向子类,可以呈现子类的特性
    Person *p = new Student;
    p->getProperty();
    p->Person::getProperty();

    return 0;
}

在这里插入图片描述

创建 QT 的工程

在这里插入图片描述
在这里插入图片描述

xxx.pro

#-------------------------------------------------
#
# Project created by QtCreator 2023-09-26T11:20:06
#
#-------------------------------------------------

#工程所需要的模块名
QT       += core gui

#如果QT版本号大于5,那么需要加入widgets
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

#生成的执行程序的名字
TARGET = qt_test
TEMPLATE = app

#指定工程包含的源文件
SOURCES += main.cpp\
        widget.cpp

#指定工程包含的头文件
HEADERS  += widget.h

main.cpp

在这里插入图片描述

widget.h

在这里插入图片描述

注意

项目构建完成后,目录中会有一个 xxx.pro.user 的文件,这个文件存储的是个人配置,比如个人构建路径、编译器路径等等。所以如果项目是从别人那里拷贝的,必须先删除此文件再打开项目。在打开项目之前,就需要删掉 user 配置文件
在这里插入图片描述
在这里插入图片描述

QT 帮助文档

QT 所有的类 都以 Q 打头。

打开帮助文档方法

1、直接点 creator 里的帮助选项;

在这里插入图片描述

2、开始菜单输入 ass,打开 assistant 即可;

在这里插入图片描述
在这里插入图片描述

3、光标定位到某个查找类或对象,按两次 F1 键

在这里插入图片描述

帮助文档的结构

头文件、模块需求、继承关系

以 QLabel 为例:

Header:		#include \<QLabel>   		// 头文件
qmake:		QT += widgets   			// 加载模块
Inherits:	QFrame   					// 父类是谁

目录

Properties:			类特性,不能直接修改
Public Functions:		公有方法,重点关注
Public Slots:			公有槽函数,重点关注
Signals:				信号,重点关注
Detailed Description:	细节描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android : Xui- RecyclerView+BannerLayout 轮播图简单应用

实例图&#xff1a; 1.引用XUI http://t.csdnimg.cn/Wb4KR 2.创建显示图片布局 banner_item.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"…

【线程池】的原理分析及源码(C语言版)

线程池的原理分析及源码&#xff08;C语言版&#xff09; centos8 连接失败 线程已满_张三和你一聊聊线程池 线程池 线程池是一种用于管理和复用线程的机制&#xff0c;通过线程池可以减少线程的创建和销毁次数&#xff0c;提高程序的性能和效率。线程池通常包含一个线程…

【第三届】:“玄铁杯”RISC-V应用创新大赛(基于yolov5和OpenCv算法 — 智能警戒哨兵)

文章目录 前言 一、智能警戒哨兵是什么&#xff1f; 二、方案流程图 三、硬件方案 四、软件方案 五、演示视频链接 总结 前言 最近参加了第三届“玄铁杯”RISC-V应用创新大赛&#xff0c;我的创意题目是基于 yolov5和OpenCv算法 — 智能警戒哨兵 先介绍一下比赛&#xf…

Spring日志完结篇,MyBatis操作数据库(入门)

目录 Spring可以对日志进行分目录打印 日志持久化&#xff08;让日志进行长期的保存&#xff09; MyBatis操作数据库(优秀的持久层框架) MyBatis的写法 开发规范&#xff1a; 单元测试的写法 传递参数 Spring可以对日志进行分目录打印 他的意思是说spring相关只打印INFO…

Android画布Canvas绘图scale,Kotlin

Android画布Canvas绘图scale&#xff0c;Kotlin <?xml version"1.0" encoding"utf-8"?> <androidx.appcompat.widget.LinearLayoutCompat xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.…

vuepress-----22、其他评论方案

vuepress 支持评论 本文讲述 vuepress 站点如何集成评论系统&#xff0c;选型是 valineleancloud, 支持匿名评论&#xff0c;缺点是数据没有存储在自己手里。市面上也有其他的方案, 如 gitalk,vssue 等, 但需要用户登录 github 才能发表评论, 但 github 经常无法连接,导致体验…

java实现网络聊天

网络聊天实现步骤&#xff08;从功能谈论方法&#xff09;&#xff1a; 客户端&#xff1a; 1.登录面板&#xff1a;注册提醒用户注册格式&#xff0c;登录账号密码不为空&#xff0c;点击登录的时候需要连接服务器端&#xff0c;启动聊天面板。&#xff08;监听用户点击登录…

logback的使用

1 logback概述 SLF4J的日志实现组件关系图如下所示。 SLF4J&#xff0c;即Java中的简单日志门面&#xff08;Simple Logging Facade for Java&#xff09;&#xff0c;它为各种日志框架提供简单的抽象接口。 SLF4J最常用的日志实现框架是&#xff1a;log4j、logback。一般有s…

LVS 三种负载均衡模式

昨天看视频了解LVS 三种负载均衡模式 &#xff0c;分别是Network Address Translation、Direct Routing、Tunneling 注&#xff1a;boardmix boardmix博思白板&#xff0c;多人实时协作的流程图&#xff0c;思维导图工具 https://boardmix.cn/ 画流程图还是很方便的

SSL 数字证书的一些细节

参考&#xff1a;TLS/SSL 协议详解(6) SSL 数字证书的一些细节1 证书验证 地址&#xff1a;https://wonderful.blog.csdn.net/article/details/77867063 参考&#xff1a;TLS/SSL协议详解 (7) SSL 数字证书的一些细节2 地址&#xff1a;https://wonderful.blog.csdn.net/articl…

Mybatis之核心配置文件详解、默认类型别名、Mybatis获取参数值的两种方式

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

聚类算法的性能度量

聚类算法的性能度量 聚类算法就是根据数据中样本与样本之间的距离或相似度&#xff0c;将样本划分为若干组&#xff0f;类&#xff0f;簇&#xff0c;其划分的原则&#xff1a;簇内样本相似、簇间样本不相似&#xff0c;聚类的结果是产生一个簇的集合。 其划分方式主要分为两…

[GWCTF 2019]我有一个数据库1

提示 信息收集phpmyadmin的版本漏洞 这里看起来不像是加密应该是编码错误 这里访问robots.txt 直接把phpinfo.php放出来了 这里能看到它所有的信息 这里并没有能找到可控点 用dirsearch扫了一遍 ####注意扫描buuctf的题需要控制扫描速度&#xff0c;每一秒只能扫10个多一个都…

基于深度学习的超分辨率图像技术一览

超分辨率(Super-Resolution)即通过硬件或软件的方法提高原有图像的分辨率&#xff0c;图像超分辨率是计算机视觉和图像处理领域一个非常重要的研究问题&#xff0c;在医疗图像分析、生物特征识别、视频监控与安全等实际场景中有着广泛的应用。 SR取得了显著进步。一般可以将现有…

网络设备的健康检查方式

网络设备的健康检查方式 L3检查 通过ICMP来检查IP地址是否正常 L4检查 通过三次握手来检查端口号是否正常 L7检查 通过真实的应用通信来检查应用程序是否正常

【CCF BDCI 2023】多模态多方对话场景下的发言人识别 Baseline 0.71 CNN 部分

【CCF BDCI 2023】多模态多方对话场景下的发言人识别 Baseline 0.71 CNN 部分 概述CNN 简介数据预处理查看数据格式加载数据集 图像处理限定图像范围图像转换加载数据 CNN 模型Inception 网络ResNet 残差网络总结参数设置 训练 Train模型初始化数据加载训练超参数训练循环 验证…

实现Django Models的数据mock

目录 一、创建测试数据 二、使用随机数据 三、使用第三方库生成数据 四、编写测试用例 五、总结 在 Django 中&#xff0c;Model 是用于定义数据库表的结构的类。有时候&#xff0c;我们需要在测试或者开发过程中&#xff0c;模拟 Model 的数据&#xff0c;而不是直接从数…

springboot基础(80):redis geospatial的应用

文章目录 前言redis geospatial如何从地图上获取经纬度springboot 的相关方法调用准备redis服务器引用的依赖预设位置的keyGEOADD 添加位置GEORADIUS 获取指定经纬度附件的停车场&#xff08;deprecated&#xff09;GEORADIUS 获取指定成员附件的停车场&#xff08;deprecated&…

SLMi8230BDCG-DG兼容Si8230BD-BS-IS 通过CQC认证隔离驱动方案探索

SLMi8230BDCG-DG 双通道1A 5.0kVRMS隔离栅极驱动器是一种具有不同配置的隔离双通道栅极驱动器。配置为高侧/低侧驱动器&#xff0c;峰值 电源 输出电流为1.0A&#xff0c;具有可编程死区&#xff08;DT&#xff09;功能。将DIS引脚拉高会同时关闭两个输出&#xff0c;并允许在D…

多合一iPhone 解锁工具:iMyFone LockWiper iOS

多合一iPhone 解锁工具 无需密码解锁 iPhone/iPad/iPod touch 上所有类型的屏幕锁定 在几分钟内解锁 iPhone Apple ID、Touch ID 和 Face ID 立即绕过 MDM 并删除 iPhone/iPad/iPod touch 上的 MDM 配置文件 支持所有 iOS 版本和设备&#xff0c;包括最新的 iOS 17 和 iPhone 1…