QT中的this指针什么意思?namespace又是什么意思?

初学者对于qt中的this指针会摸不着头脑,下面我谈谈自己的理解。

结论:this指针,指的就是qt designer里面ui界面,也就是xxx.ui文件。

举个例子。

现在我有三个文件,分别是server.h头文件,server.cpp源文件,还有server.ui文件。

在server.h文件里我定义了一个类server,它继承自QWidget。在private:里定义了一个server类的ui文件,实际上就是server.ui文件

 
//server.h
namespace Ui
{
    class server;
}

class server : public QWidget
{
    Q_OBJECT
 
public:
    explicit server(QWidget *parent = 0,winpcap *tem = NULL);
    ~server();
 
 
 
private:
    Ui::server *ui;
 
protected:
 
    void paintEvent(QPaintEvent *);
 


this指针的一般解释是:this指针指向一个类的对象,只能在一个类的成员函数中调用,表示当前对象的地址。

在这个例子中,

 Ui::server *ui;


这个新定义的ui 即是server类的一个对象(同时也是server.ui文件),当我在调用server类的成员函数(比如上面的 paintEvent函数),在paintEvent里使用this指针的时候,this指针所指的就是server.ui文件!

*****************************************************************(这段是解释namespace,不看可跳过)

有的同学会对qt中的namespace Ui疑惑,比如上面代码中的,

 
namespace Ui
{
    class server;
}

这里谈谈我的理解。

为什么要用namespace?原因就在于qt想把 <直观的ui界面> 从 <具体的代码> 中分离出来。

怎么分离呢,基本思路就是从<具体的代码>中复制一份相同的代码出来,再转化为ui界面。具体的操作就是新定义一个server类的对象。

比如,上面那个例子。

private:
    Ui::server *ui;  //从<具体的代码>中复制一份相同的代码出来

再server.cpp里面,通常会由一句话

ui->setupUi(this);  

这句代码的意思就是,将新定义的ui对象,通过qt提供的setupUi函数,转化为直观的ui界面,即server.ui

回到问题:为什么要namespace Ui? 

 
namespace Ui
{
    class server;
}

namespace Ui 就相当于 声明server这个类可以使用 xxx.ui文件。有点类似函数声明一样:namespace相当于声明,而server.ui 就相当于具体的函数定义。

假如我们去掉上面这段代码,那么编译的时候就会报错,说无法使用setupUi这个函数。

***********************************************************************************

回到问题,this指针什么意思?


  • 3
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值