用了大概2个月的时间,学了Qt,然后开发一个小项目,总的来说,在主机GUI程序中,相比Java的Swing和JavaFX,个人感觉Qt的界面设计更加简便一点,灵活性更高一些,然后下边就主要简述一下Qt的基础知识。
学习一门语言,要学一下他的语法特色,Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。所以说他的本质语法还是C++。
本博客内容仅用于学习
本博客原创,转载请注明!!!
首先先了解一下,C++的面向对象编程的基础语法。
参考资料:C++ 类 & 对象
这里不过多的解释面向对象思想,而是主要说明C++的面向对象的编程语法,相较于Java的面向对象 的区别。
首先C++面向对象一般会有两个文件,一个是.h文件,头文件用来存储一些定义声明之类的东西,一个是cpp文件,用来实现头文件的定义.用c++简单的创建一个Student类,开发工具用的是CodeBlocks,代码如下
Student.h#ifndef STUDENT_H #define STUDENT_H #define man 0 #define woman 1 #includeStudent.cppusing 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
#include "Student.h" #include#include Student::Student() { //ctor cout<<"无参创建了一个Student"< 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<<"姓名: "< name< age< sex< main.cpp #include#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多态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++一样的,语法和上边一样,主要注意的还是指针,关于内存的申请和释放,避免野指针的出现。



