我刚开始学习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