у меня есть 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")
должен занимать весь экран.
Задача ещё не решена.
Других решений пока нет …