Qt学习之C++基础

article/2025/10/25 0:57:01

前言

用了大概2个月的时间,学了Qt,然后开发一个小项目,总的来说,在主机GUI程序中,相比Java的Swing和JavaFX,个人感觉Qt的界面设计更加简便一点,灵活性更高一些,然后下边就主要简述一下Qt的基础知识。
学习一门语言,要学一下他的语法特色,Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。所以说他的本质语法还是C++。

Qt入门系列:
Qt学习之C++基础
Qt学习之Qt安装
Qt学习之Qt基础入门(上)
Qt学习之Qt基础入门(中)
Qt学习之Qt基础入门(下)

本文原创,创作不易,转载请注明!!!
本文链接
个人博客: https://ronglin.fun/archives/224
PDF链接:见博客网站
CSDN: https://blog.csdn.net/RongLin02/article/details/120594168

总述

首先先了解一下,C++的面向对象编程的基础语法。
参考资料:C++ 类 & 对象
这里不过多的解释面向对象思想,而是主要说明C++的面向对象的编程语法,相较于Java的面向对象 的区别。

示例代码

首先C++面向对象一般会有两个文件,一个是.h文件,头文件用来存储一些定义声明之类的东西,一个是cpp文件,用来实现头文件的定义.用c++简单的创建一个Student类,开发工具用的是CodeBlocks,代码如下

Student.h

#ifndef STUDENT_H
#define STUDENT_H
#define man 0
#define woman 1
#include <string>
using namespace std;class Student
{
public:enum Degree{NoStudy=0,Primary = 1,Junior = 2,Senior = 3,University = 4};Student();Student(string name,int age,int sex,Degree degree);virtual ~Student();void setName(string name);void setAge(int age);void setSex(int sex);void setDegree(Degree degree);string getName();int getAge();int getSex();Degree getDegree();void printInfo();protected:private:string name;int age = 0;int sex = man;Degree degree;
};#endif // STUDENT_H

Student.cpp

#include "Student.h"
#include <iostream>
#include <string>Student::Student()
{//ctorcout<<"无参创建了一个Student"<<endl;
}Student::Student(string name,int age,int sex,Degree degree)
{cout<<"有参创建了一个Student"<<endl;this->name = name;this->age = age;this->sex = sex;this->degree = degree;
}void Student::setName(string name)
{this->name = name;
}
void Student::setAge(int age)
{this->age = age;
}
void Student::setSex(int sex)
{this->sex = sex;
}
void Student::setDegree(Degree degree)
{this->degree = degree;
}string Student::getName()
{return this->name;
}
int Student::getAge()
{return this->age;
}
int Student::getSex()
{return this->sex;
}
Student::Degree Student::getDegree()
{return this->degree;
}void Student::printInfo()
{cout<<"姓名: "<<this->name<<endl;cout<<"年龄: "<<this->age<<endl;cout<<"性别: "<<this->sex<<endl;
}Student::~Student()
{//dtorcout<<"销毁了一个Student"<<endl;
}

main.cpp

#include <iostream>
#include "Student.h"using namespace std;int main()
{Student stu1;stu1.setName("小亮");stu1.setAge(10);stu1.setSex(man);stu1.printInfo();Student stu2("小明",18,man,Student::University);stu2.printInfo();Student* pStu1 = new Student;pStu1->setName("小花");pStu1->setAge(30);pStu1->setSex(woman);pStu1->printInfo();Student* pStu2 = new Student("小红",20,woman,Student::University);pStu2->printInfo();delete pStu1;delete pStu2;return 0;
}

文件布局如下:
在这里插入图片描述
运行结果:
在这里插入图片描述

解释说明

首先创建了一个Student类,有两个构造函数,一个是无参构造,一个是有参构造。
和java面向对象编程的方法类似,但是C++有指针这个东西,需要在堆上申请内存,然后最后注意释放delete申请的内存。
同时,写成员函数的实现的时候,要注意在函数名称前加作用域。

封装

同时面向对象的,封装性也体现出来了,public protected private

继承

关于继承,C++支持多继承,和Java的单继承不太一样,可以参考一下这个网站
C++ 继承
直接copy一段网站上的示例代码

#include <iostream>using namespace std;// 基类 Shape
class Shape 
{public:void setWidth(int w){width = w;}void setHeight(int h){height = h;}protected:int width;int height;
};// 基类 PaintCost
class PaintCost 
{public:int getCost(int area){return area * 70;}
};// 派生类
class Rectangle: public Shape, public PaintCost
{public:int getArea(){ return (width * height); }
};int main(void)
{Rectangle Rect;int area;Rect.setWidth(5);Rect.setHeight(7);area = Rect.getArea();// 输出对象的面积cout << "Total area: " << Rect.getArea() << endl;// 输出总花费cout << "Total paint cost: $" << Rect.getCost(area) << endl;return 0;
}

多态

同样看一下菜鸟教程的多态说明
C++ 多态
和Java的类似,就不赘述了。

总结

C++面向对象和Java大体类似,重要的是面向对象的思想,而Qt也是一样的,和C++一样的,语法和上边一样,主要注意的还是指针,关于内存的申请和释放,避免野指针的出现。


http://chatgpt.dhexx.cn/article/vc40ysfl.shtml

相关文章

Qt学习之Qt基础入门(中)

1. 前言 上一篇博客&#xff0c;总结了Qt的一些基础用法&#xff0c;这篇博客继续跟视频学习Qt的常用方法 Qt入门系列&#xff1a; Qt学习之C基础 Qt学习之Qt安装 Qt学习之Qt基础入门(上) Qt学习之Qt基础入门(中) Qt学习之Qt基础入门(下) 本文原创&#xff0c;创作不易&…

Qt学习之Qt基础入门(上)

1. 前言 上一篇博客&#xff0c;简单的介绍了一下C的面向对象编程&#xff0c;这篇博客就主要是用来入门Qt&#xff0c;废话不多说&#xff0c;开干&#xff01; Qt入门系列&#xff1a; Qt学习之C基础 Qt学习之Qt安装 Qt学习之Qt基础入门(上) Qt学习之Qt基础入门(中) Qt学习…

qt基础入门教程

1、t的介绍、优点、成功案例 5.8.0 Qt是一个跨平台的C图形用户界面应用程序框架。它为应用程序开发者提供建立艺术级图形界面所需的所有功能。爸是完全面向对象的&#xff0c;很容易扩展&#xff0c;并且允许真正的组件编程。 推荐安装 wps linux 桌面环境 虚拟机软件 屏幕共…

Qt入门教程100篇(已完结)

&#x1f608;「CSDN主页」&#xff1a;传送门 &#x1f608;「Bilibil首页」&#xff1a;传送门 &#x1f608;「CSDN学院」&#xff1a;传送门 &#x1f608;「本文的内容」&#xff1a;Qt基础教程 &#x1f608;「动动你的小手」&#xff1a;点赞&#x1f44d;收藏⭐️评论&…

QT入门看这一篇就够了——超详细讲解(40000多字详细讲解,涵盖qt大量知识)

目录 一、Qt概述 1.1 什么是Qt 1.2 Qt的发展史 1.3 Qt的优势 1.4 Qt版本 1.5 成功案例 二、创建Qt项目 2.1 使用向导创建 2.2 一个最简单的Qt应用程序 2.2.1 main函数中 2.2.2 类头文件 2.3 .pro文件 2.4 命名规范 2.5 QtCreator常用快捷键 三、Qt按钮小程序 …

QT入门到实战学习笔记

学习笔记 最新QT从入门到实战完整版|传智教育_哔哩哔哩_bilibili 目录 1.创建一个QT文件 1.1命名规范 1.2快捷键 2QPushButton创建 2.1防止汉语乱码 2.2对象树 2.3Qt窗口坐标体系 3信号和槽机制 3.1自定义信号和槽 3.1.1自定义信号&#xff1a; 3.1.2自定义槽&#…

pdflatex和xelatex的使用差别和建议

关于pdflatex和xelatex的区别的一些注意点 pdflatex 和xelatex分别是什么我遇到的一些问题 pdflatex 和xelatex分别是什么 pdflatex 和xelatex是latex编译中最常用的编译方式&#xff0c;而且效果一般都是比较好的。 PDFLaTeX命令&#xff1a;PDFTeX程序中的命令&#xff0c;用…

关于MAC解决jupyter中出现nbconvert failed/ xelatex not found on path报错

前言 开开心心的花了半个小时做完了2303的期中测试&#xff0c;结果在导出为pdf的时候提示我500错误&#xff0c;说明为nbconvert failed: xelatex not found on path&#xff0c;我当时就蒙了昂&#xff0c;不过还好考试时间是三个小时&#xff0c;还能浪浪&#xff0c;但是我…

【LaTex使用总结】LaTex,pdflatex,xelatex,xetex等的区别和关系

问题是这样产生的&#xff0c;从本科毕设开始接触LaTex起&#xff0c;使用现成的模板进行编译生成操作&#xff0c;一步步按指示操作也从未深究。 后来使用word较多&#xff0c;LaTex经常是简单模板&#xff0c;也渐渐对LaTex的细节不再感兴趣&#xff0c;近期又开始用LaTex撰写…

pyplot 使用 latex 报错:xelatex not found……

错误提示 发生异常: RuntimeError xelatex not found. Install it or change rcParams[pgf.texsystem] to an available TeX implementation. 原始参数&#xff1a; plt.rcParams.update({"pgf.texsystem": "xelatex","text.usetex": True,# u…

Winedt为什么可以用pdfLaTex编译中文(pdfLaTex和XeLaTex的使用)

文章目录 Winedt为什么可以用pdfLaTex编译中文查看Winedt的默认编译器&#xff1a; 1.XeLaTex和pdfLaTex的关系2.Winedt中使用pdfLaTex编译中文的tex3.原因4.验证 Winedt为什么可以用pdfLaTex编译中文 前言&#xff1a;如果你只是想用Winedt实现LaTex中英混排那么可以直接选择…

recipe terminated with fatal error: spawn xelatex enoent.

vscode配置latex的小问题 问题产生的原因是环境变量没有配置好。所以只需要把环境变量配置好就可以了。 1、 打开textlive安装的路径&#xff08;…\textlive\2022\bin\win32&#xff09;&#xff0c;比如我的就是C:\texlive\2022\bin\win32 2、编辑环境变量&#xff1a; 编…

TeXstudio报错: fwrite: Broken pipe xelatex.exe

错误&#xff1a; 解决方法&#xff1a; 选项->设置TeXstudio 默认编译器换成PdfLaTex&#xff1a; 问题解决。

CTEX编译Xelatex以及如何更新Miktex

1.现在很多科研人员都喜欢用latex来写文章&#xff0c;主要是latex有了模板之后排版较简单&#xff0c;而且参考文献比较容易生成&#xff0c;不需要再去排版。本人自己比较喜欢使用CTEX&#xff0c;这个得看个人习惯使用吧。有很多同胞在使用CTEX 时可能会遇到无法编译Xelatex…

linux下latex使用教程,LaTeX使用--XeLaTeX入门基础(二)

主机平台&#xff1a;Gentoo Linux 11.2 内核版本&#xff1a;Linux Kernel 3.2.1 编译环境&#xff1a;XeTeX 3.1415926-2.3-0.9997.5 (TeX Live 2011) 相关阅读 主机平台&#xff1a;Gentoo Linux 11.2 内核版本&#xff1a;Linux Kernel 3.2.1 编译环境&#xff1a;XeTeX 3.…

TeXworks 设置成默认用XeLaTeX排版

TeXworks 设置成默认用XeLaTeX排版 在用Texlive2020中,自身自带的编辑器每次都是默认以pdfLaTeX的方式进行排版 因为pdfLaTex在排版中文的时候容易乱码和报错, 用XeLaTeX排版就不会,为了方便就将它设置为一打开编辑器就是以XeLaTeX 方式排版 一打开就是这样子 首先在编辑器页面…

解决XeLaTex编译后中文出现乱码的问题

最近想用LaTex做简历&#xff0c;但是在做中文简历的时候&#xff0c;出现乱码的情况&#xff0c;网上查了很多解决方法&#xff0c;最后成功解决了&#xff0c;在这里总结分享一下。 先建立一个tex文件&#xff0c;输入一下格式的文件&#xff0c;注意加入\usepackage{CTEX} …

Latex、XeLatex无法加粗

XeLaTeX是新的Unicode版本&#xff0c;内建支持Unicode(UTF-8)&#xff0c;可以调用操作系统的字体。但是在使用的时候也可能会出现许多问题&#xff0c;例如我最近使用的时候字体就一直无法显示粗体&#xff0c;但是运行的时候不报错。 原因有可能是你的系统里面缺少模板指定…

配置中文XeLaTex环境

本人初始时懒人一键使用了CTex安装&#xff0c;但无奈写中文论文时版本太低不支持使用的模板&#xff0c;所以开始自行配置TexLiveWinEdtSumatraPDF的环境。【TeXworks个人觉得真的不太好用 其中使用TexLive时遇到的一些问题及解决方案如下&#xff1a; fontspec.cfg: Erroneo…

VSCode Latex Workshop 设置 XeLatex 编译

前言 VSCode LatexWorkshop 是非常方便的组合&#xff0c;而对于中文文档&#xff0c;pdfLatex 引擎的支持很差&#xff0c;很多时候需要使用 XeLatex 引擎编译&#xff0c;但是总是莫名其妙各种报错。用下面的 magic 语句也无济于事。 % !TEX program xelatex 本篇介绍通…