初学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

 

p,li { white-space: pre-wrap }
p,li { white-space: pre-wrap }

版权声明:本文为katachi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/katachi/p/9005767.html