QDialog с Qt :: WindowMaximizeButtonHint неверно после второго вызова exec

у меня есть QDialog с кнопкой максимизации и небольшим тестером.

main.cpp

#include <QApplication>
#include <QPushButton>
#include "MyDialog.h"
int main(int argc, char** args) {
QApplication app(argc, args);
auto widget=new MyDialog;
auto btn = new QPushButton("Show");
btn->show();
QObject::connect(btn, &QPushButton::clicked, [&]() {widget->exec(); });
app.exec();
}

MyDialog.h

#pragma once

#include <QDialog>
#include <QMainWindow>
#include <QPushButton>
#include <QVBoxLayout>
#include <QLabel>
#include <QFrame>

class MyDialog : public QDialog {
Q_OBJECT
public:
MyDialog(QWidget* parent = nullptr) : QDialog(parent) {
auto window = new QMainWindow;
auto frame = new QFrame;
frame->setLayout(new QHBoxLayout);
frame->layout()->addWidget(new QLabel("Test"));
window->setCentralWidget(frame);
setLayout(new QVBoxLayout);
layout()->setMargin(0);
layout()->addWidget(window);
setWindowFlags(windowFlags() | Qt::CustomizeWindowHint | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint | Qt::WindowCloseButtonHint);
}
};

В моем тесте я нажимаю [Шоу], тогда я максимизирую свой диалог. Теперь я закрываю диалог нажатием на крестик. Тогда я нажимаю [Шоу] снова. После этого я получил неправильный рендеринг моего диалога.

Как я могу исправить это поведение. QLabel("Test")должен занимать весь экран.

Неправильный рендеринг моего диалога

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]