M
M
mr-ZA2019-02-27 16:57:37
Qt
mr-ZA, 2019-02-27 16:57:37

Explain the parsing of the mainwindow.h file in QT step by step?

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QWidget>
#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private slots:


private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

Answer the question

In order to leave comments, you need to log in

1 answer(s)
M
Mercury13, 2019-02-27
@Mercury13

// Защита от повторного включения
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

// Пара include’ов
#include <QWidget>
#include <QMainWindow>

// Определение UI-класса наперёд, чтобы визуальное редактирование не приводило
// к крупным перекомпиляциям
namespace Ui {
class MainWindow;
}

// Собственно класс формы
class MainWindow : public QMainWindow
{
    // Макрос, который добавляет файл в компиляцию MOC’ом,
    // а также реализует пару функций
    Q_OBJECT

public:
    // Конструктор-деструктор.
    // Форма семантически не эквивалентна parent’у,
    // потому конструктор explicit
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

// Слоты — фишка Qt, которая обрабатывается MOC’ом
private slots:


private:
    // Указатель на UI (для него в Qt есть ещё одна программа, UIC)
    Ui::MainWindow *ui;
};

// Защита от повторного включения
#endif // MAINWINDOW_H

What else to write?
Defining a class in advance does not interfere with writing pointers and references.
The explicit constructor disables implicit conversion. Explicit makes sense if it is possible to call a constructor with one parameter. The rule is: set explicit if your object is not equivalent in meaning to the only constructor parameter. For example, , but : when constructing a rational number from an integer, there will be a full equivalent, but when constructing an array, it will not. Ratio(int x);explicit Array(int x);

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question