Problem with Mdiarea Subwindow
-
I have these files:
main.cpp mainwindow.cpp .h .ui dialog.cpp .h. ui
main.cpp
@#include "mainwindow.h"
#include <QApplication>int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();return a.exec();
}
@mainwindow.h
@#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include "dialog.h"namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{
Q_OBJECTpublic:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
Dialog *dialog;private slots:
void on_pushButton_clicked();void on_pushButton_2_clicked();
private:
Ui::MainWindow *ui;
};#endif // MAINWINDOW_H
@
mainwindow.cpp
@#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}MainWindow::~MainWindow()
{
delete ui;
}void MainWindow::on_pushButton_clicked()
{
if (!dialog)
{
dialog = new Dialog(this);
ui->mdiArea->addSubWindow(dialog,Qt::Dialog);
}
dialog->show();
dialog->adjustSize();
}void MainWindow::on_pushButton_2_clicked()
{
}
@The problem is when i click the pushButton, the dialog appear in Mdiarea. Then i close the dialog and when i click again pushButton aplication crash.
-
Hi,
You're lucky it doesn't crash directly, you don't initialize dialog to 0 in your constructor.
-
Start by initializing dialog to 0 in the constructor
-
You don't know how to initialize a member variable in C++ ?
Then you should rather grab a good C++ book and read it before continuing.
-
So it's alright now ?