Membuat Custom Widget: Subclass QWidget
Penjelasan
Untuk UI yang dipakai berulang (mis. kartu produk), sebaiknya dibungkus jadi class custom turunan QWidget — mirip component di React/Vue. Constructor-nya menyusun layout dan widget anaknya sendiri, sehingga class itu bisa dipakai ulang di banyak tempat cukup dengan satu baris instantiate.
Contoh Konsep
class KartuProduk : public QWidget
{
Q_OBJECT
public:
KartuProduk(const QString &nama, int harga, QWidget *parent = nullptr) : QWidget(parent)
{
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(new QLabel(nama));
layout->addWidget(new QLabel(QString("Rp %1").arg(harga)));
}
};
// Pemakaian:
// KartuProduk kartu1("Kaos CompileDaily", 99000);
// kartu1.show();
Praktikum
Buat class KartuArtikel (turunan QWidget) dengan constructor menerima QString judul dan QString penulis, menampilkan keduanya lewat QLabel tersusun QVBoxLayout.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Parameter QWidget *parent = nullptr di constructor adalah KONVENSI PENTING di Qt — kalau widget custom-mu diberi parent (mis. dipasang ke layout widget lain), Qt otomatis MENGELOLA memorinya (dihapus otomatis saat parent-nya dihapus), mencegah memory leak tanpa kamu perlu delete manual.