QDialog不会出现,除非我调用它

QDialog will not appear except if I call it?

本文关键字:非我 调用 QDialog      更新时间:2023-10-16

这不起作用:

void MainWindow::on_left_win_clicked()
{
    Dialog *dialog1 = new Dialog(this);
    dialog1->show();
    return;
}

但是,这确实:

void MainWindow::on_left_win_clicked()
{
    QDialog *dialog1 = new QDialog(this);
    dialog1->show();
    return;
}

我只是使用了标准的Qt设计器表单类-底部带有按钮>对话框

编辑:添加了dialog.h和dialog.cpp

dialog.h 这只是标准的 dialog.h 没有在设计器窗口中为我创建的更改。

#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
    Q_OBJECT
public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();
private:
    Ui::Dialog *ui;
};
#endif // DIALOG_H

.cpp我在这里添加的唯一部分是基于另一个线程中的建议的 setWindowFlags(没有帮助)。

#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent)
    : QDialog(parent), ui(new Ui::Dialog)
{
    ui->setupUi(this);
    setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::Dialog);
}
Dialog::~Dialog()
{
    delete ui;
}

很简单。 如果您尚未进行typedef QDialog Dialog;则编译器可能不知道

对话框

对于"易于理解"的代码,我会使用类的原始名称,因此任何人都可以知道对话框是一个QDialog对象