1.QT概述及C++基础

news2024/11/27 22:38:12

QT概述及C++基础

  • 1.简介
  • 2.QT安装
  • 3.QT_Creator的基本使用
  • 4.C++基础

1.简介

  • 概述

    Qt 是一个跨平台的应用程序和用户界面框架,用于开发图形用户界面(GUI)应用程序以及命令行工具。它最初由挪威的 Trolltech (奇趣科技)公司开发,现在由 Qt Company 维护,2020年12月8日发布QT6。Qt 使用 C++ 语言编写,支持多种编程语言通过绑定进行使用。

  • QT5的特点

    1. 成熟和稳定性

      Qt 5已经存在了一段时间,经过了多个版本的迭代和改进。它在很多项目中被广泛使用,证明了其成熟性和稳定性。这对于在大型项目或生产环境中使用Qt的开发者来说是一个优势。

    2. 丰富的文档和社区支持

      Qt 5有大量的文档和社区支持。你可以轻松找到各种教程、示例和解决方案,这对于初学者来说是非常宝贵的。

    3. 广泛的应用领域

      Qt 5有大量的文档和社区支持。你可以轻松找到各种教程、示例和解决方案,这对于初学者来说是非常宝贵的。

2.QT安装

  • 安装包:去官网下载:https://download.qt.io/archive/qt/5.12/5.12.9/

  • 注意事项

    1. 进入官网可能会需要挂梯子
    2. 离线安装就不用登录QT账号(断开网络就可以了)

    在这里插入图片描述

  • 要安装的东西

    • window编译工具
    • QT源代码
    • QT的绘图模块
    • QT的虚拟键盘
    • 安装完成后打开

在这里插入图片描述

3.QT_Creator的基本使用

  • 创建QT工程

    1. 文件→新建文件或项目

      在这里插入图片描述

    2. 选择Application(QT)→QT Weight Application;点击choose

      在这里插入图片描述

    3. 给工程命名,然后选择保存路径,设置为默认的路径(建议单独创建一个文件来保存工程);其他选项默认就可以了。(暂时默认,后面有需要再改)

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

  • 创建成功

    在这里插入图片描述

  • 代码

    #include "mainwindow.h"
    
    #include <QApplication>
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        MainWindow w;
        w.show();
        return a.exec();
    }
    
  • 运行程序的方法

    1. 点击项目右键→运行

      在这里插入图片描述

    2. 左下角绿色的小按钮

      在这里插入图片描述

    3. 快捷键:CTRL + R

  • 运行成功

    在这里插入图片描述

  • 注意的问题

    1. 虚拟的文件夹:QT环境根据后缀名形成虚拟的文件夹,目的是为了方便代码的区分

      在这里插入图片描述

    2. 工程所在的文件夹

      在这里插入图片描述

  • 主要的文件

    在这里插入图片描述

  • 页面有两种展示方式

    1. UI页面

      在这里插入图片描述

    2. 代码展示

      在这里插入图片描述

    3. 设计的时候主要以拖拽的形式去开发

  • QT常用快捷键

    复制行向下:CTRL + ALT + DOWN(向下的箭头)

    复制行向上 :CTRL + ALT + UP(向上的箭头)

    位置后退 :ALT+Left(向左的箭头)

    切换当前文件 :CTRL + TAB(按住CTRL,再按TAB进行切换)

    在这里插入图片描述

    在这里插入图片描述

  • 创建C++工程

    1. 选择Non—Qt Project→Plain C++ Application;点击choose

    2. 其他选项选择默认;一直下一步(和创建QT工程的流程是一样的)

      在这里插入图片描述

    3. 创建成功

      在这里插入图片描述

    4. 代码

      #include <iostream>
      
      using namespace std;
      
      int main()
      {
          cout << "Hello World!C++" << endl;
          return 0;
      }
      
  • 创建C语言工程

    1. 选择Non—Qt Project→Plain C Application;点击choose

    2. 其他选项选择默认;一直下一步(和创建QT工程的流程是一样的)

      在这里插入图片描述

    3. 创建成功

      在这里插入图片描述

    4. 代码

      #include <stdio.h>
      
      int main()
      {
          printf("Hello World!\n");
          return 0;
      }
      

4.C++基础

  • C和C++之间的关系是紧密且复杂的。C++最初是作为C语言的一个扩展开发的,目的是在不放弃C的强大功能和效率的同时,增加对象导向编程、泛型编程和其他一些特性。

  • C++和C语言主要的区别

    1. 兼容性:C++在很大程度上是与C兼容的。这意味着许多C程序可以在C++编译器中编译并运行,尽管可能需要一些小的修改。
    2. 面向对象编程(OOP):C++引入了面向对象编程,它允许使用类和对象。而C语言是一个过程性(面向过程)的语言,不支持这些概念,或者说支持得不好、麻烦。
    3. 模板:C++支持模板,这是一种允许程序员编写与数据类型无关的代码功能。C没有这个功能
    4. 标准库:C++有一个更丰富的标准库,包括STL(标准模板库),这为数据结构和算法提供了广泛的支持。而C的标准库相对较小。
    5. 类型检查:C++比C提供更严格的类型检查。这意味着某些在C中可行但可能导致错误的代码在C++中可能无法编译。
    6. 异常处理:C++支持异常处理,这是一种处理程序运行时错误的机制。C没有这种内置的异常处理机制
  • 命名空间的作用

    • 创建自己的命名空间是 C++ 中组织代码的一种好方法,特别是在开发大型项目或库时。命名空间可以帮助你避免名称冲突,并且清晰地组织代码。

    • std 是 C++ 标准库的命名空间。它是一个定义在 C++ 标准库中的所有类、函数和变量的命名空间。

    • 代码

      #include <iostream>
      
      using namespace std;//命名空间
      
      int main()
      {
          cout << "Hello World!C++" << endl;
          return 0;
      }
      
  • 在 C++ 中,如果你想使用标准库中的任何类、函数或对象,你通常有两种选择

    • 使用 std::前缀:这是最常见的方式,它明确指定了你正在使用的是位于 std 命名空间中的元素。

      #include <iostream>
      
      int main()
      {
          std::cout << "Hello World!C++" << std::endl;
          return 0;
      }
      
    • 使用using namespace std; :这允许你在不显示指定 std:: 的情况下使用 std 命名空间中的所有元素。

      #include <iostream>
      
      using namespace std;
      
      int main()
      {
          cout << "Hello World!C++" << endl;
          return 0;
      }
      
  • std包含的内容:std 命名空间包含了许多类、函数和对象

    • 输入输出库(如 std::cout , std::cin , std::endl )
    • 容器类(如 std::vector , std::map , std::set )
    • 字符串类( std::string )
    • 异常类( std::exception 和相关子类)
    • 算法(如 std::sort , std::find )
    • 实用工具(如 std::pair , std::tuple )
    • 其他许多功能
  • 使用建议

    • 对于小型代码或示例代码,使用 using namespace std; 通常是安全的。
    • 对于大型项目或库,建议显式地使用 std:: 前缀,以避免潜在的名称冲突,并提高代码的可读性和可维护性。
    • std 命名空间是 C++ 编程的基础部分,理解和正确使用它对于编写健壮和高效的 C++ 代码至关重要。
  • 自定义命名空间

    创建一个命名空间来包含与圆形相关的功能,我们可以命名这个命名空间为 Cir。

    cir.h

    //定义了一个名为 Cir 的命名空间
    //其中包含了计算圆的面积和周长的函数,以及圆周率常量 PI
    #ifndef CIR_H
    #define CIR_H
    
    namespace cir {
        //1.定义圆周率PI
        double PI = 3.14;
        //2.定义一个获取圆周长的函数
        double GetLength(int radius){
            //返回圆周长
            return 2*PI*radius;
        }
        //3.定义一个获取圆面积的函数
        double GetMianji(int radius){
           return PI*radius*radius;
        }
    }
    
    #endif // CIR_H
    
  • 使用命名空间:在main.cpp文件中,我们可以使用这个命名空间中定义的函数和常量

    #include <iostream>
    #include "Cir.h"
    #include <stdio.h>
    
    using namespace std;
    
    int main()
    {
        cout << "Hello World!C++" << endl;
    
        //定义一个半径
        double radius = 5;
        //打印周长
        printf("%lf\n",cir::GetLength(radius));
        //打印面积
        printf("%lf\n",cir::GetMianji(radius));
        return 0;
    }
    

    在 main.cpp 中,包含了定义 Cir 命名空间的头文件。可以使用 Cir:: 前缀来访问该命名空间中的函数和常量。

    通过使用自定义命名空间,可以有效地组织你的代码,并减少不同库之间的名称冲突。

    #include <iostream>
    #include "Cir.h"
    #include <stdio.h>
    
    using namespace cir;
    using namespace std;
    
    int main()
    {
        cout << "Hello World!C++" << endl;
    
        //定义一个半径
        double radius = 5;
        //打印周长
        printf("%lf\n",GetLength(radius));
        //打印面积
        printf("%lf\n",GetMianji(radius));
        return 0;
    }
    

C语言和C++可以混着写

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

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

相关文章

MySQL程序介绍<一>

目录 MySQL程序简介 mysqld - MySQL 服务器 ​编辑 mysql - MySQL 命令⾏客⼾端 MySQL程序简介 1.MySQL安装完成通常会包含如下程序&#xff1a; Linux系统程序⼀般在 /usr/bin⽬录下&#xff0c;可以通过命令查看 windows系统⽬录&#xff1a; 你的安装路径\MySQL Server…

Redis JSON介绍和命令大全

Redis JSON介绍和命令大全 Redis JSON先说说JSON是什么再说说JSON Path先推荐两个网站JSONPath JAVA clents Redis JSON 安装内存json命令语法命令url命令解释JSON.ARRAPPENDJSON.ARRINDEXJSON.ARRINSERTJSON.ARRLENJSON.ARRPOPJSON.ARRTRIMJSON.CLEARJSON.DEBUG MEMORYJSON.DE…

Java 入门基础篇15 - java构造方法以及认识新的关键字

一 今日目标 构造方法static关键字代码块math类package关键字import关键字 二 构造方法概述 2.1 构造方法描述 构造方法是一个特殊方法&#xff0c;作用是创建对象&#xff0c;对对象进行初始化。 ​ 如&#xff1a; 对对象中的成员进行初始化值 2.1 构造方法的特征 1、方…

C/C++每日一练:编写一个栈数据结构

通过编写栈&#xff08;Stack&#xff09;数据结构&#xff0c;提升对基本数据结构的理解和运用。这也是掌握更复杂数据结构与算法的基础。栈是计算机科学中的一个重要概念&#xff0c;经常出现在许多算法和应用中。 栈&#xff08;Stack&#xff09; 栈是一种后进先出&#x…

【初阶数据结构】计数排序 :感受非比较排序的魅力

文章目录 前言1. 什么是计数排序&#xff1f;2. 计数排序的算法思路2.1 绝对位置和相对位置2.2 根据计数数组的信息来确认 3. 计数排序的代码4. 算法分析5. 计数排序的优缺点6.计数排序的应用场景 前言 如果大家仔细思考的话&#xff0c;可能会发现这么一个问题。我们学的七大…

【C语言】原码 反码 补码

为什么要有原码 反码 补码的概念&#xff1f; 因为在计算机中最终只能识别机器码&#xff0c;是以 0000 0000 二进制作为表示形式&#xff0c;对于一个数&#xff0c;计算机要使用一定的编码方式进行存储&#xff0c;原码 反码 补码是机器存储一个数值的编码方式&#xff0c;最…

技术分享:A-23OH型树脂在汽车涂装废溶剂回收中的应用

在当今汽车制造业竞争激烈的环境下&#xff0c;提高生产效率、降低成本的同时&#xff0c;满足环保要求已成为各制造商追求的核心目标。水性涂料因其环保、节能等多重优势&#xff0c;在汽车涂装领域的应用日益广泛。然而&#xff0c;随之而来的喷涂废溶剂处理问题也日益凸显。…

2024年软件设计师中级(软考中级)详细笔记【7】面向对象技术(下)23种设计模式(分值10+)

目录 前言阅读前必看 第七章 面向对象技术&#xff08;下&#xff09;7.3 设计模式&#xff08;固定4分&#xff09;7.3.1 设计模式的要素7.3.2 创建型设计模式7.3.2.1 Abstract Factory&#xff08;抽象工厂&#xff09;7.3.2.2 Builder&#xff08;生成器&#xff09;7.3.2.3…

调整奇数偶数的顺序

//调整奇数偶数的顺序 //输入一个整数数组&#xff0c;实现一个函数 //使得数组中所有的奇数位于数组的前半部分&#xff0c;所有的偶数位于数组的后半部分 #include<stdio.h> void tz(int a[],int sz) {int i 0;int j 0;int q 0;int c[100] { 0 };int b[100] { 0 …

Qt第十三天:网络编程:TCP和UDP的使用

我发现了有些人喜欢静静看博客不聊天呐&#xff0c; 但是ta会点赞。 这样的人呢帅气低调有内涵&#xff0c; 美丽大方很优雅。 说的就是你&#xff0c; 不用再怀疑哦 ❤️TCP&#xff1a; 一、创建项目&#xff0c;命名为Server&#xff0c;继承QWidget 二、添加Qt设计师…

Axure重要元件三——中继器添加数据

亲爱的小伙伴&#xff0c;在您浏览之前&#xff0c;烦请关注一下&#xff0c;在此深表感谢&#xff01; 本节课&#xff1a;中继器添加数据 课程内容&#xff1a;添加数据项、自动添加序号、自动添加数据汇总 应用场景&#xff1a;表单数据的添加 案例展示&#xff1a; 步骤…

算法: 模拟题目练习

文章目录 模拟替换所有的问号提莫攻击Z 字形变换外观数列数青蛙 总结 模拟 替换所有的问号 按照题目的要求写代码即可~ public String modifyString(String ss) {int n ss.length();if (n 1) {return "a";}char[] s ss.toCharArray();for (int i 0; i < n; i…

【华为HCIP实战课程十三】OSPF网络中3类LSA及区域间负载均衡,网络工程师

一、ABR SW1查看OSPF ABR为R4而非R3,因为R4连接骨干区域0,R3没有连接到区域0 R6查看OSPF路由: 二、查看3类LSA,由于R6不是ABR因此自身不会产生3类LSA 但是有区域间路由就可以看到3类LSA

分布式介绍

CAP理论 CAP理论是分布式架构中提出来的一种设计思想模型&#xff0c;全称是由Consistency、Availability、Partition Tolerance三个词组成。 C(Consistency&#xff0c;一致性):总能读到最新的写操作的结果A(Availability&#xff0c;可用性):每个请求都要在合理的时间内给出…

Spring Boot知识管理:跨平台集成方案

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…

后渗透利用之vcenter

目录 vcenter介绍环境搭建历史漏洞版本信息1、直接访问2、请求接⼝ 打点CVE_2021_21972漏洞描述&#xff1a;POC&#xff1a; 后渗透获取vCenter后台重置密码Cookie登录创建管理员 获取虚拟机Hash分析快照挂载磁盘 获取Esxi 后台获取解密key获取数据库账号密码查询Esxi加密密码…

ESP32-IDF 分区表

目录 一、基本介绍1、配置结构体1.1 esp_partition_t1.2 esp_partition_iterator_t 2、常用 API2.1 esp_partition_find2.2 esp_partition_find_first2.3 esp_partition_get2.4 esp_partition_next2.5 esp_partition_iterator_release2.6 esp_partition_verify2.7 esp_partitio…

使用WPF写一个简单的开关控件

<Window x:Class"WPF练习.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expression/blend/2008"xm…

适用于 vue react Es6 jQuery 等等的组织架构图(组织结构图)

我这里找的是 OrgChart 插件; 地址: GitHub - dabeng/OrgChart: Its a simple and direct organization chart plugin. Anytime you want a tree-like chart, you can turn to OrgChart. 这里面能满足你对组织架构图的一切需求! ! ! 例: 按需加载 / 拖拽 / 编辑 / 自定义 / …

【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练

一、介绍 玉米病害识别系统&#xff0c;本系统使用Python作为主要开发语言&#xff0c;通过收集了8种常见的玉米叶部病害图片数据集&#xff08;‘矮花叶病’, ‘健康’, ‘灰斑病一般’, ‘灰斑病严重’, ‘锈病一般’, ‘锈病严重’, ‘叶斑病一般’, ‘叶斑病严重’&#x…