Saya menggeneralisasi beberapa pustaka GUI tetapi pada level yang sangat tinggi konsep terpenting yang perlu Anda pahami adalah bahwa GUI dikendalikan oleh peristiwa .
Dalam aplikasi konsol, input pengguna Anda biasanya terjadi pada titik-titik tertentu yang Anda tetapkan. Anda meminta pengguna Anda, Anda menunggu inputnya, Anda menghitung sesuatu berdasarkan input itu. Salah satu perbedaan utama adalah bahwa input hanya terjadi di satu tempat, Anda membaca teks dari commandline ( stdin
dalam C ++).
Dalam aplikasi GUI Anda biasanya memiliki beberapa tempat di mana input dapat terjadi, misalnya tombol yang melakukan tindakan atau bidang teks yang berbeda. Di sinilah peristiwa ikut bermain. Misalnya, mengklik tombol memicu suatu peristiwa. Acara ini perlu ditangani oleh pengendali acara , yang biasanya hanya metode yang mengambil objek acara dan dipanggil ketika even tersebut dipicu. Bagaimana tombol Anda tahu tentang pengendali acara? Anda biasanya berlangganan (atau mendengarkannya ).
Berikut ini adalah contoh "Terinspirasi C ++", ini bukan kode QT atau C ++ yang sebenarnya.
class MyClickHandler : public ClickListener{
void clickHandler(ClickEvent e){
showAlertBox("The button "+e.getSource().getName()+" has been clicked");
}
};
Saat Anda membuat Tombol, Anda mendaftarkan turunan dari kelas MyClickHandler terhadap tombol.
...
MyClickHandler handler();
Button b("Save");
b.registerListener(handler);
...
Sekarang setiap kali Tombol b
diklik kotak pesan muncul mengatakan "Tombol Simpan telah diklik".
Anda dapat membayangkan aplikasi GUI memiliki dua tahap:
- Menetapkan GUI: Periode singkat di startup, di mana semua objek dibuat dan terhubung satu sama lain.
- The loop acara : GUI Anda dalam satu besar sementara loop dan hanya duduk di sana pemalasan sampai acara dipicu.
Ini adalah contoh yang sangat sederhana, tetapi saya akan merekomendasikan dengan kerangka apa pun yang Anda ambil, Anda mencoba menampilkan kotak pesan ketika sebuah tombol diklik.
Untuk framework, ada banyak dari mereka di luar sana: Dalam kasus C ++ saya mungkin akan merekomendasikan Qt.
Satu kata nasihat terakhir: Jauhi desainer GUI sampai Anda benar-benar tahu apa yang terjadi di latar belakang. Tidaklah sulit untuk menulis beberapa contoh sederhana dan untuk memahami loop acara terlebih dahulu dan kemudian beralih ke tata letak yang lebih kompleks.