前言
用了大概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++一样的,语法和上边一样,主要注意的还是指针,关于内存的申请和释放,避免野指针的出现。


















