QDialog除非我打电话,否则不会出现?

时间:2013-10-20 00:15:02

标签: c++ qt qmainwindow qdialog qtgui

这不起作用:

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.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

dialog.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;
}

1 个答案:

答案 0 :(得分:0)

简单。如果你没有typedef QDialog Dialog;,那么编译器可能不知道对话框

对于“易于理解”的代码我将使用类的原始名称,因此任何人都可以告诉该对话框是QDialog对象