[완료] Qt mainwindow와 또다른창(widget)이 있을때, mainwindow를 종료하면 또다른창도 종료되게 하고 싶습니다

pogusm의 이미지

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
 
#include "widget.h"
 
namespace Ui {
    class MainWindow;
}
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
 
private:
    Ui::MainWindow *ui;
 
	int total;
 
	QWidget *w2;
 
private slots:
	void on_pushButton_quit_program2_clicked();
	void on_pushButton_run_program2_clicked();
	void on_pushButton_start_clicked();
	void on_pushButton_reset_clicked();
};
 
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
 
#include "widget.h"
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
 
	total=0; // 변수 초기화
 
}
 
MainWindow::~MainWindow()
{
 
    delete ui;
 
    w2->close(); // ★★★★★이부분이 생각처럼 작동하지 않음★★★★★★
 
}
 
 
void MainWindow::on_pushButton_reset_clicked()
{
 
	total=0; // 변수 초기화
 
	ui->label_1->setText(trUtf8("0"));
 
	ui->pushButton_start->setEnabled(true); // 시작버튼 비활성화
 
}
 
void MainWindow::on_pushButton_start_clicked()
{
	ui->pushButton_start->setEnabled(false); // 시작버튼 비활성화
 
	for(int i=1; i<=1000000; i++)
	{
		total += i;
		for(int j=0; j<1000; j++)
		{
			//테스트를 위해 계산 속도지연
		}
	}
 
	ui->label_1->setText(QString::number(total));
 
	total=0; // 변수 초기화
 
	ui->pushButton_start->setEnabled(true); // 시작버튼 비활성화
}
 
 
void MainWindow::on_pushButton_run_program2_clicked()
{
	w2 = new Widget();  // program2
	w2->show();
}
 
void MainWindow::on_pushButton_quit_program2_clicked()
{
	w2->close();  // 이부분은 정상적으로 동작함
}

(위의 소스코드를 포함하는 전체 소스도 압축파일로 첨부합니다)

질문:
mainwindow에서 program2를 실행하라는 버튼을 누르면 별도의위젯이 새창으로 열립니다.
그런데, mainwindow를 종료해도 program2는 종료되지 않습니다.

MainWindow::~MainWindow()
{
    delete ui;
    w2->close(); // 이부분이 생각처럼 작동하지 않음
}

이부분이 문제인거 같은데.. 조금만 도와주세요 ㅠㅠ

그리고, program2버튼을 누르면 program2가 계속 열리는데.. 단 하나의 창만 실행되게끔 하고 싶습니다.

void MainWindow::on_pushButton_run_program2_clicked()
{
	w2 = new Widget();  // program2
	w2->show();
}

여기에서, 이미 w2가 열려있다면, 추가로 new 하지 못하도록 해야할거 같은데.. 어떻게 하면 좋을까요?
File attachments: 
첨부파일 크기
Package icon program1.zip4.87 KB
pogusm의 이미지

잠도 안오고 해서
이것저것 해보다가 해결했습니다.
^^;

댓글 첨부 파일: 
첨부파일 크기
Package icon program1_완료.zip5.05 KB

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.