Qt 3 – Permasalahan 2: Destroy Semua Child Window Ketika Parent Ditutup

Bismillahirrahmanirrahim.

Tanggal

Thursday, August 20, 2015 07:46 PM

Status

Berhasil.

Workaround

http://www.qtforum.org/article/21347/solved-qdialog-not-closed-when-qmainwindow-closed.html

Implementasi

mainwindow.cpp

void MainWindow::closeEvent(QCloseEvent *evt)
{
 Q_UNUSED(evt);
foreach(QWidget *widget, QApplication::topLevelWidgets())
 {
 widget->close();
 }
}

mainwindow.h

protected:
 void closeEvent(QCloseEvent *evt);

Keterangan

Implementasi ini menciptakan satu fungsi closeEvent() bersifat protected di header, lalu menggunakannya di dalam mainwindow. Kerja fungsinya adalah melakukan sesuatu untuk setiap (foreach) QWidget dari sekumpulan top level widgets. Yang dilakukan adalah widget->close(). Artinya, implementasi ini menutup setiap widget anakan ketika parent QMainWindow ditutup. closeEvent() adalah event handler. Tidak dibutuhkan signal & slot.

Hasil Diharapkan

Ketika main window (parent) ditutup, segala window (child) ikut ditutup otomatis tanpa ada error.

Hasil Nyata

Ketika main window ditutup, segala window ikut ditutup. Jendela output Qt Creator tidak menayangkan error melainkan exited with code 0.

Iklan

Dilarang menggunakan emotikon

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s