Birkaç GUI kütüphanesi üzerinde genelleme yapıyorum, ancak çok yüksek seviyede anlamanız gereken en önemli kavram bir GUI'nin olay güdümlü olması .
Bir konsol uygulamasında kullanıcı girişiniz genellikle tanımladığınız belirli noktalarda gerçekleşir. Sizden kullanıcıyı uyarırsınız, girdisini beklersiniz, bu girdiye göre bir şey hesaplarsınız. Temel farklılıklardan biri, girişin yalnızca tek bir yerde gerçekleşmesidir, komut satırından ( stdin
C ++ 'da) metin okuyorsunuz .
Bir GUI uygulamasında, genellikle farklı eylemler veya metin alanları gerçekleştiren düğmeler gibi girdinin olabileceği birden çok yeriniz vardır . Olaylar burada devreye giriyor. Örneğin, bir düğmeyi tıklatmak bir etkinliği tetikler. Bu olayın , genellikle böyle bir çift tetiklendiğinde çağrılan bir olay nesnesini alan bir yöntem olan bir olay işleyicisi tarafından ele alınması gerekir . Düğmeniz olay işleyiciyi nasıl biliyor? Genellikle abone olursunuz (veya dinlersiniz ).
İşte bir "C ++ ilham" örneği, bu gerçek QT veya C ++ kodu değil.
class MyClickHandler : public ClickListener{
void clickHandler(ClickEvent e){
showAlertBox("The button "+e.getSource().getName()+" has been clicked");
}
};
Düğmeyi oluşturduğunuzda, düğmeye karşı MyClickHandler sınıfının bir örneğini kaydedersiniz.
...
MyClickHandler handler();
Button b("Save");
b.registerListener(handler);
...
Şimdi Button b
düğmesine her tıklandığında "Save (Kaydet) düğmesine tıklandı" yazan bir mesaj kutusu görünür.
Bir GUI uygulamasının iki aşaması olduğunu hayal edebilirsiniz:
- GUI'yi oluşturun: Başlangıçta tüm nesnelerin oluşturulduğu ve birbirine bağlandığı kısa bir süre.
- Olay döngü : Sizin GUI Bir Big ise döngü ve sadece bir olay tetiklenir kadar rölantide orada oturuyor.
Bu çok basit bir örnek, ancak hangi çerçevede seçerseniz seçin, bir düğme tıklandığında bir mesaj kutusu göstermeyi deneyin.
Çerçeve için, orada bir sürü var: C ++ durumunda muhtemelen Qt tavsiye ederim.
Son bir tavsiye sözcüğü: Arka planda neler olduğunu gerçekten öğrenene kadar GUI tasarımcılarından uzak durun. Bazı basit örnekler yazmak ve önce olay döngüsünü anlamak ve sonra daha karmaşık düzenlere geçmek o kadar da zor değildir.