Qt中的ui指针和this指针

初学qt,对其ui指针和this指针产生疑问,画了个把小时终于搞懂了。


 

首先看ui指针的定义:

在mainwindow.h中

private:
    Ui::MainWindow *ui;

Ui又是什么?

同在mainwindow.h

namespace Ui {
class MainWindow;
}

本体是ui_mainwindow.h中:

namespace Ui {
    class MainWindow: public Ui_MainWindow {};
} // namespace Ui

也就是说Ui域中的MainWindow是完全继承自类Ui_MainWindow,而类Ui_MainWindow是关联qtdesigner的,.ui文件中的实现和类Ui_MainWindow密不可分。

再看*ui ,他是一个指向Ui域中MainWindow的指针,可以访问qtdesigner中的控件等元素,他本身是非Ui域中的MainWindow的一个成员指针变量。

然后是this:

非Ui域中的MainWindow是继承自QMainWindow的,他的构造是这样:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

this指向非Ui域中的MainWindow的一个对象,所以可以说this->ui

 

参考:


https://blog.csdn.net/songjinshi/article/details/7333119

 

posted @ 2018-05-07 23:23  katachi  阅读(8534)  评论(1编辑  收藏  举报