Не вижу настроенного QLayout вместе с кнопкой QPushButton

Рейтинг: 0Ответов: 1Опубликовано: 05.04.2023
#include "mainwindow.h"

#include <QApplication>
#include <QLabel>
#include <QPushButton>
#include <QVBoxLayout>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;

    QLabel *label = new QLabel("<center>Привет, мир!</center>");
    QPushButton *btnQuit = new QPushButton("&Закрыть окно");
    QVBoxLayout *vbox = new QVBoxLayout();
    vbox->addWidget(label);
    vbox->addWidget(btnQuit);
    w.setLayout(vbox);
    QObject::connect(btnQuit, SIGNAL(clicked()),
                     &a, SLOT(quit()));

     w.show();
    return a.exec();
}

введите сюда описание изображения

Ответы

▲ 0
#include <QApplication>
#include <QLabel>
#include <QPushButton>
#include <QVBoxLayout>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget w;
    w.resize(600, 600);

    QLabel *label = new QLabel("<center>Привет, мир!</center>");
    QPushButton *btnQuit = new QPushButton("&Закрыть окно");
    QVBoxLayout *vbox = new QVBoxLayout();
    vbox->addWidget(label);
    vbox->addWidget(btnQuit);
    w.setLayout(vbox);
    QObject::connect(btnQuit, SIGNAL(clicked()),
                     &a, SLOT(quit()));

     w.show();
    return a.exec();
}

Сделай на QWidget сразу, отнаследуй класс MainWindow от QWidget - это более популярный стиль в Qt.

#include <QApplication>
#include <QMainWindow>
#include <QLabel>
#include <QPushButton>
#include <QVBoxLayout>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QMainWindow window;
    QWidget widget;
    window.setCentralWidget(&widget);

    QLabel *label = new QLabel("<center>Привет, мир!</center>");
    QPushButton *btnQuit = new QPushButton("&Закрыть окно");
    QVBoxLayout *vbox = new QVBoxLayout(&widget);
    vbox->addWidget(label);
    vbox->addWidget(btnQuit);
    window.setLayout(vbox);
    QObject::connect(btnQuit, SIGNAL(clicked()),
                     &a, SLOT(quit()));

     window.show();
    return a.exec();
}

Решение через QMainWindow.