这不起作用:
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;
}
答案 0 :(得分:0)
简单。如果你没有typedef QDialog Dialog;
,那么编译器可能不知道对话框
对于“易于理解”的代码我将使用类的原始名称,因此任何人都可以告诉该对话框是QDialog
对象