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