Qdialog与Qt :: WindowMaximizeButtonHint第二次调用exec后不正确

时间:2017-05-15 09:06:47

标签: c++ qt qdialog maximize-window

我有一个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")应该占据整个屏幕。

Wrong rendering of my dialog

0 个答案:

没有答案