> For the complete documentation index, see [llms.txt](https://op-al.gitbook.io/s-30-voprosy-i-dop.-voprosy/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://op-al.gitbook.io/s-30-voprosy-i-dop.-voprosy/qt.-ierarkhiya-klassov.-struktura-programmy-s-graficheskim-interfeisom..md).

# Qt. Иерархия классов. Структура программы с графическим интерфейсом.

В Qt все построено на объектах, главным базовым классом является QObject. Все классы, имеющие сигналы и слоты в Qt унаследованы от него. При множественном наследовании, если в иерархии планируется наличие класса QObject, его имя должно стоять первым в списке базовых классов, иначе метаобъектный компилятор Qt moc (Meta object compiler) будет ругаться.

```cpp
#include <QApplication>
#include <QLabel>
#include <QPushButton>
#include <QVBoxLayout>
#include <QWidget>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    // Создание главного окна
    QWidget window;
    window.setWindowTitle("Пример программы");

    // Создание метки
    QLabel label("Привет, Qt!");
    
    // Создание кнопки
    QPushButton button("Нажми меня");

    // Создание компоновщика
    QVBoxLayout layout(&window);
    
    // Добавление метки и кнопки в компоновщик
    layout.addWidget(&label);
    layout.addWidget(&button);

    // Установка связей между сигналами и слотами
    QObject::connect(&button, &QPushButton::clicked, &label, &QLabel::setText);

    // Отображение главного окна
    window.show();

    // Запуск цикла обработки событий
    return app.exec();
}ut
```
