OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3020|回复: 1

QT学习之旅之1——Hello World

[复制链接]

8

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2016-6-30
在线时间
10 小时
发表于 2016-7-3 13:12:16 | 显示全部楼层 |阅读模式

我的最终目标是实现一个串口上位机。

直奔主题:

1.Hello World的程序代码

[mw_shl_code=cpp,true]//包含两个类
#include <QApplication>
#include <QLabel>
int main(int argc, char *argv[])
{
    //QApplication 对象,管理 Qt 程序的生命周期,开启事件循环,必须的
    QApplication app(argc, argv);
    //建一个 QLabel 对象,构造函数赋值“Hello, world”
    QLabel label("Hello, world");//涉及的C++知识:类、构造函数
    //调用 QLabel的 show()函数将“Hello, world”显示出来
    label.show();//涉及的C++函数:通过类对象调用public属性的成员函数
    //开启事件循环,相当于while(1)
    return app.exec();
}[/mw_shl_code]

2.C++加油站


2.1 什么是类

类的关键字为“Class”,可以理解为数据类型的一种,只不过这种数据是自己构造的。其实“Class”和“Struct”很类似,只不过,“Class”多了一个“private”属性。

类的定义:

class 类名

{

private:

私有成员变量、私有成员函数;

protected:

保护成员变量、函数;

public:

公共成员变量、函数;

};

例程:

[mw_shl_code=cpp,true]// ConsoleApplication5.cpp : 定义控制台应用程序的入口点。  
#include "stdafx.h"  
#include <iostream>  
using namespace std;  
//创建一个类,相当于创建一个数据类型  
class cal{  
private://私有成员变量、函数,只能在类内访问  
    float arg1;  
    float arg2;  
    float sum;  
public://公有成员变量、函数,可在.c文件任何地方访问  
    void input(float a, float b)  
    {  
        arg1 = a; //在类内给私有变量赋值  
        arg2 = b; //在类内给私有变量赋值  
    }  
    void calculate()  
    {  
        sum = arg1 + arg2;  
        cout << "sum = " << sum << endl; //在类内访问私有成员变量  
    }  
};  
int _tmain(int argc, _TCHAR* argv[])  
{  
    cal float_cal;//声明一个类对象  
    float_cal.input(1.32, 2.35);//调用public成员函数  
    float_cal.calculate();  
    while (1);  
    return 0;  
}  [/mw_shl_code]

补充:上面的例子“在类的内部定义了成员函数”,现在讲述另外一种定义成员函数的方法:“在类的外部定义成员函数”

[mw_shl_code=cpp,true] 格式:  
    返回类型  类名::成员函数名(参数)  
    {  
        函数体;  
    }  [/mw_shl_code]

点一下:“::”这个符号为“作用域操作符”

修改上面的例子:

[mw_shl_code=cpp,true]// ConsoleApplication5.cpp : 定义控制台应用程序的入口点。  
#include "stdafx.h"  
#include <iostream>  
using namespace std;  
//创建一个类,相当于创建一个数据类型  
class cal{  
private://私有成员变量、函数,只能在类内访问  
    float arg1;  
    float arg2;  
    float sum;  
public://公有成员变量、函数,可在.c文件任何地方访问  
    void input(float a, float b);  
    void calculate();   
};  
//在类的外部定义类成员函数  
void cal::input(float a, float b)  
{  
    arg1 = a; //在类内给私有变量赋值  
    arg2 = b; //在类内给私有变量赋值  
}  
//在类的外部定义类成员函数  
void cal::calculate()  
{  
    sum = arg1 + arg2;  
    cout << "sum = " << sum << endl; //在类内访问私有成员变量  
}  
int _tmain(int argc, _TCHAR* argv[])  
{  
    cal float_cal;//调用带参构造函数初始化私有成员变量  
    float_cal.input(1.23, 5.36);  
    float_cal.calculate();  
    while (1);  
    return 0;  
}  [/mw_shl_code]

2.2 what is "对象"

定义一个类,并且申明一个变量,该变量即为“对象”。类就是数据类型,是用户定义的数据类型,对象可以看成
某个类的实例(某个类的变量) 。类比:int是数据类型,int a是实例。

2.3构造函数

构造函数的作用是给私有成员变量赋初值。下面,讲解的是“带参构造函数"

带参构造函数格式:

[mw_shl_code=cpp,true]

类名(参数)  
{  
    函数体;  
}  [/mw_shl_code]

使用方法:

类名  对象名(参数);//该类对象会调用构造函数进行私有成员的初始化

例子:

[mw_shl_code=cpp,true]// ConsoleApplication5.cpp : 定义控制台应用程序的入口点。  
#include "stdafx.h"  
#include <iostream>  
using namespace std;  
//创建一个类,相当于创建一个数据类型  
class cal{  
private://私有成员变量、函数,只能在类内访问  
    float arg1;  
    float arg2;  
    float sum;  
public://公有成员变量、函数,可在.c文件任何地方访问  
    //重写构造函数(可传参数)  
    cal(float a, float b)  
    {  
        arg1 = a; //在类内给私有变量赋值  
        arg2 = b; //在类内给私有变量赋值  
    }  
    void input(float a, float b);  
    void calculate();   
};  
void cal::input(float a, float b)  
{  
    arg1 = a; //在类内给私有变量赋值  
    arg2 = b; //在类内给私有变量赋值  
}  
//在类的外部定义类成员函数  
void cal::calculate()  
{  
    sum = arg1 + arg2;  
    cout << "sum = " << sum << endl; //在类内访问私有成员变量  
}  
int _tmain(int argc, _TCHAR* argv[])  
{  
    cal float_cal(1.11,2.66);//调用带参构造函数初始化私有成员变量  
    float_cal.calculate();  
    while (1);  
    return 0;  
}  [/mw_shl_code]


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

1592

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2622
金钱
2622
注册时间
2014-7-17
在线时间
350 小时
发表于 2016-7-3 18:30:38 | 显示全部楼层
QT原来是用C++写的啊??
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 09:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表