QT概述及C++基础
- 1.简介
- 2.QT安装
- 3.QT_Creator的基本使用
- 4.C++基础
1.简介
-
概述
Qt 是一个跨平台的应用程序和用户界面框架,用于开发图形用户界面(GUI)应用程序以及命令行工具。它最初由挪威的 Trolltech (奇趣科技)公司开发,现在由 Qt Company 维护,2020年12月8日发布QT6。Qt 使用 C++ 语言编写,支持多种编程语言通过绑定进行使用。
-
QT5的特点
-
成熟和稳定性
Qt 5已经存在了一段时间,经过了多个版本的迭代和改进。它在很多项目中被广泛使用,证明了其成熟性和稳定性。这对于在大型项目或生产环境中使用Qt的开发者来说是一个优势。
-
丰富的文档和社区支持
Qt 5有大量的文档和社区支持。你可以轻松找到各种教程、示例和解决方案,这对于初学者来说是非常宝贵的。
-
广泛的应用领域
Qt 5有大量的文档和社区支持。你可以轻松找到各种教程、示例和解决方案,这对于初学者来说是非常宝贵的。
-
2.QT安装
-
安装包:去官网下载:https://download.qt.io/archive/qt/5.12/5.12.9/
-
注意事项
- 进入官网可能会需要挂梯子
- 离线安装就不用登录QT账号(断开网络就可以了)
-
要安装的东西
- window编译工具
- QT源代码
- QT的绘图模块
- QT的虚拟键盘
- 安装完成后打开
3.QT_Creator的基本使用
-
创建QT工程
-
文件→新建文件或项目
-
选择Application(QT)→QT Weight Application;点击choose
-
给工程命名,然后选择保存路径,设置为默认的路径(建议单独创建一个文件来保存工程);其他选项默认就可以了。(暂时默认,后面有需要再改)
-
-
创建成功
-
代码
#include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }
-
运行程序的方法
-
点击项目右键→运行
-
左下角绿色的小按钮
-
快捷键:CTRL + R
-
-
运行成功
-
注意的问题
-
虚拟的文件夹:QT环境根据后缀名形成虚拟的文件夹,目的是为了方便代码的区分
-
工程所在的文件夹
-
-
主要的文件
-
页面有两种展示方式
-
UI页面
-
代码展示
-
设计的时候主要以拖拽的形式去开发
-
-
QT常用快捷键
复制行向下:CTRL + ALT + DOWN(向下的箭头)
复制行向上 :CTRL + ALT + UP(向上的箭头)
位置后退 :ALT+Left(向左的箭头)
切换当前文件 :CTRL + TAB(按住CTRL,再按TAB进行切换)
-
创建C++工程
-
选择Non—Qt Project→Plain C++ Application;点击choose
-
其他选项选择默认;一直下一步(和创建QT工程的流程是一样的)
-
创建成功
-
代码
#include <iostream> using namespace std; int main() { cout << "Hello World!C++" << endl; return 0; }
-
-
创建C语言工程
-
选择Non—Qt Project→Plain C Application;点击choose
-
其他选项选择默认;一直下一步(和创建QT工程的流程是一样的)
-
创建成功
-
代码
#include <stdio.h> int main() { printf("Hello World!\n"); return 0; }
-
4.C++基础
-
C和C++之间的关系是紧密且复杂的。C++最初是作为C语言的一个扩展开发的,目的是在不放弃C的强大功能和效率的同时,增加对象导向编程、泛型编程和其他一些特性。
-
C++和C语言主要的区别
- 兼容性:C++在很大程度上是与C兼容的。这意味着许多C程序可以在C++编译器中编译并运行,尽管可能需要一些小的修改。
- 面向对象编程(OOP):C++引入了面向对象编程,它允许使用类和对象。而C语言是一个过程性(面向过程)的语言,不支持这些概念,或者说支持得不好、麻烦。
- 模板:C++支持模板,这是一种允许程序员编写与数据类型无关的代码功能。C没有这个功能
- 标准库:C++有一个更丰富的标准库,包括STL(标准模板库),这为数据结构和算法提供了广泛的支持。而C的标准库相对较小。
- 类型检查:C++比C提供更严格的类型检查。这意味着某些在C中可行但可能导致错误的代码在C++中可能无法编译。
- 异常处理: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++可以混着写