, wenn Sie ein Standard QT5 Widget-Anwendung zu erstellen, ist dies der Standardcode für die QMainWindow
Unterklasse:Wie ist dieser Qt-Boilerplate-Konstruktor nicht rekursiv? So
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
So ist die Klasse hat ein Beispiel für sich selbst, das scheint in Ordnung zu sein. Aber dann hätte diese Instanz selbst eine Instanz, die wiederum eine Instanz von sich selbst hätte ...
Wie führt dies nicht zu einer unendlichen Rekursion von Klassen, die sich selbst enthalten?
Ok, das macht Sinn, aber wo ist die Definition der UI-Klasse? Anders als diese beiden Dateien gibt es nur die Hauptdatei und eine '.ui' Datei, die nur die Benutzeroberfläche des Fensters im XML-Format ist. – rcplusplus
Nach RTFM habe ich herausgefunden, dass' Ui :: MainWindow' automatisch vom 'uic' generiert wird Werkzeug, das '.ui' Dateien in C++ Code kompiliert. So hat deine Antwort alle Zweifel aus meinem Kopf entfernt! Es ist schon eine Weile her, seit ich C++ benutzt habe :) – rcplusplus