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