0

这不起作用:

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 Designer Form Class -> Dialog with Buttons Bottom

编辑:添加了 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;
}
4

1 回答 1

0

简单的。如果您还没有创建typedef QDialog Dialog;对话框,编译器可能不知道

对于“易于理解”的代码,我会使用类的原始名称,所以任何人都可以看出对话框是一个QDialog对象

于 2013-10-22T09:09:29.040 回答