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