一、C++基础(上)
1、什么是C++?
C++是C语言的升级版,在C的基础上增加了很多功能。是一种高级语言。
2、 什么是面向对象?什么是面向过程?
C语言就是面向过程,C++面向对象。
举例:a+b。直接计算a+b就是面向过程。
面向对象是给a+b穿上一层衣服,不是直接计算a+b。
3、C++的灵魂,C++的类
类是C语言结构的升级版,类的成员可以是变量也可以是函数。
4、如何定义一个类
class student
{
public:
char name[64];
char age;
}
5、什么是对象?
对象是类的实例化。类定义出来的实例是对象。
6、如何定义对象
直接定义
student my; //student就是类,my就是对象。
在堆中定义:
student* my = new student;
删除对象,只能删除在堆里面定义的对象。释放堆里面的内存。
delete my;
7、怎么访问类的成员
普通的直接用点. 指针类型的用箭头->
8、类的成员函数
因为类里面的成员不仅可以试变量,也可以是函数。
第一步,在类里面声明函数。
class student
{
public:
char name[64];
char age;
void test()
{
cout<<"123"<<endl;
}
}
第二步,实现这个函数。可以直接在类里面写。也可以在类外面写。
class student
{
public:
char name[64];
char age;
void test();
}
void student::test()//student表示属于这个类里面的函数,不加的话会被识别成普通函数
{
cout<<"123"<<endl;
}
访问函数和访问变量是一样的。
9、类的访问符
类的访问符就是对类的成员 进行权限管理。
public:表示函数和变量是公开的,任何人都可以访问。
private:表示函数和变量只能在自己的类里面自己访问自己,不能通过对象来访问。
class student
{
public:
char name[64];
private:
char age;
int hhhh;
void test();
}
void student::test()//student表示属于这个类里面的函数,不加的话会被识别成普通函数
{
cout<<"123"<<endl;
hh = 100;
}
student.age;//是无法访问的,提示报错。可以强行访问。
//比如我们绕一个弯,可以通过访问my.test,来访问hhhh;
protected:表示函数和变量只能在自己的类里面自己访问自己,但是可以被派生类访问。
一、C++基础(下)
1、类函数的重载特性
类函数的重载特性就是说我们可以在类中定义同名的函数,但是参数不一样。
重载函数会在调用的时候,根据参数的类型,去匹配响应的函数进行调用。
2、构造函数和析构函数
析构函数:假如我们定义了析构函数,当对象被删除,或者生命周期结束的时候,就会出发析构函数。
构造函数:假如我们定义了构造函数,当对象被创建,就会触发构造函数。
如何定义?
1、构造函数和析构函数的名字和类名一模一样。
2、析构函数前面加一个波浪线。
构造函数可以被重载。析构函数不能被重载。
3、类的继承
类的继承允许我们在新的类中继承父类的public和protected部分,private是不能被继承的。
当我们觉得这个类不好的时候,可以使用类的继承,添加我们所需要的的功能。
格式:class 儿子:public 爸爸
{
public:…
protected:…
}
class student
{
public:
char name[64];
char age;
void test();
}
class mystudent: public student
{
public:
int grade;
}
如何在子类中访问父类的成员?
也是通过.和->访问。
4、虚函数和纯虚函数
虚函数:有实际定义的,允许派生类对它进行覆盖式的替换,virtual 来修饰。
纯虚函数:没有实际代码定义的虚函数就是纯虚函数。
举例:
virtual void test();//虚函数
virtual void test(){};//纯虚函数
怎么定义一个虚函数?
用virtual来修饰,虚函数是用在类的继承上的。
虚函数的优点?
可以预留接口,实现分工合作。
三、用QT做一个简单的界面
1、QT基础
qt的移植性很强,一套代码不要改太多,直接通用所以平台。不久将来将要用到单片机上。
2、做一个简单的qt界面
做一个简单的QQ登录界面,我们用到的组件,放图片,放文本,放GIF图的组件就是qlabel。
放账号和密码的对话框用的是qlinedit,按钮我们使用的组件是qpushbutton。密码配置在qlinedit echoMode中设置成password。
四、信号和槽
1、给控件改名字
为了分析代码方便,我们要给控件改名字。
2、什么是信号和槽
信号:信号就是控件发出的特定信号。
比如按钮的信号:
槽:就是槽函数的意思,我们可以把槽函数绑定在某一个控件信号上,当按键按下的时候,触发槽函数。
3、怎么关联信号和槽
<1>自动关联
右键,转到槽。系统自动生成声明,在widget.cpp生成回调函数。在回调函数中写入想生成的功能即可。
槽函数只能声明到private slots或者public slots下面。
<2>手动关联
手动关联需要用到这个函数。
connect(ui->logoBt,SIGNAL(clicked()),this,SLOT(logoBt_clicked_slots()));
connect(A,SIGNAL(B),C,SLOT(D));
//当对象A发出B信号时,就会触发对象C的槽函数D。
五、仿写一个界面
给QT工程添加图片
第一步:添加资源文件
第二步:引用这个图片
右键->改变样式表->找到文件
图标下载网址 :链接
界面布局
QT下的布局:
1、水平布局
2、垂直布局
3、栅格布局
加入弹簧拖拽。
界面切换
步骤一:创建一个新的界面
在新创建的界面中画图。
设置返回按钮的链接,右击之后转到槽函数。之后再在槽函数中设置this->close();关闭窗口。
验证账号和密码登录正确。
void Widget::logoBt_clicked_slots()
{
// qDebug("启动");
QString username = ui->userEdit->text();//把获得到的账号数据放到username中
QString password = ui->passwordEdit->text();//把获得到的密码数据放到password中
if(username == "827890053"&&password == "123")//密码正确 创建新界面
{
ctrl *ct = new ctrl; //在ctrl中new一个对象
ct->setGeometry(this->geometry());//获取当前界面的宽和高
ct->show();//显示这个新建的界面
}
}