Study
Qt

Dialog: QMessageBox & QDialog Custom

Penjelasan

QMessageBox menyediakan dialog siap pakai untuk kasus umum: information(), warning(), critical(), dan question() (mengembalikan tombol yang diklik user, cocok untuk konfirmasi ya/tidak). Untuk form popup custom, dibuat class turunan QDialog sendiri, ditampilkan modal lewat exec().

Contoh Konsep

// QMessageBox siap pakai:
auto jawaban = QMessageBox::question(nullptr, "Konfirmasi", "Yakin ingin menghapus?");
if (jawaban == QMessageBox::Yes) {
    // lanjutkan hapus
}

// QDialog custom:
class DialogTambahProduk : public QDialog
{
    Q_OBJECT
public:
    DialogTambahProduk(QWidget *parent = nullptr) : QDialog(parent)
    {
        QVBoxLayout *layout = new QVBoxLayout(this);
        layout->addWidget(new QLineEdit());
        auto tombolSimpan = new QPushButton("Simpan");
        connect(tombolSimpan, &QPushButton::clicked, this, &QDialog::accept);
        layout->addWidget(tombolSimpan);
    }
};

// Pemakaian: DialogTambahProduk dialog; if (dialog.exec() == QDialog::Accepted) { ... }

Praktikum

Tulis contoh QMessageBox::question() untuk konfirmasi "Yakin ingin keluar aplikasi?", tangani kasus jawaban Yes dan No secara berbeda (komentar cukup untuk aksinya).

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

exec() pada QDialog bersifat MODAL (blocking) — kode setelah exec() TIDAK dijalankan sampai dialog-nya ditutup user, beda dengan show() yang non-blocking (kode setelahnya langsung lanjut jalan meski jendela masih terbuka). Pilih exec() untuk dialog yang harus dijawab dulu sebelum lanjut.