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).
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.