Qt 类指针之间的区别

121*_*12q 1 c++ qt

我刚开始学习Qt,有一些东西不太明白。所以我由创建者制作了小部件应用程序,框架为 MainWindow 创建了头文件和 cpp 文件。

头文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QLayout>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:


private:
    Ui::MainWindow *ui;
    QLayout *aLayout;
    QLayout *bLayout;
};

#endif // MAINWINDOW_H
Run Code Online (Sandbox Code Playgroud)

.cpp文件

#include "mainwindow.h"
#include "ui_mainwindow.h"

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

MainWindow::~MainWindow()
{
    delete ui;
}
Run Code Online (Sandbox Code Playgroud)

ui我的问题是构造函数创建的对象和this在同一构造函数中使用的对象之间有什么区别。另外,为什么我不能通过ui指针访问 MainWindow 成员?

小智 5

您的成员“ui”的类型为 Ui :: MainWindow - 它是一个从您的表单生成的类。该类是由 UIC 生成的。http://doc.qt.io/Qt-5/uic.html

“this”指针 - 是指向当前类的指针,在您的情况下,它的类型为 MainWindow。

Ui::MainWindow 和 MainWindow 不一样。如果您想访问由 Qt Designer 创建的按钮 - 使用“ui”成员,而不是“this”指针。

也许这个链接会帮助你http://doc.qt.io/Qt-5/designer-using-a-ui-file.html