2

我有QDialog一个最大化按钮和一个小型测试运行器。

主文件

#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();
    }

我的对话.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);
    }
};

在我的测试运行器中,我按下[Show],然后我最大化我的对话框。现在我按十字键关闭对话框。然后我再次按[显示]。之后我得到了错误的对话框渲染。

我该如何解决这种行为。QLabel("Test")应该占据整个屏幕。

我的对话框的错误渲染

4

0 回答 0