Örnek bir uygulama olması açısından bir hesap makinesi yapalım. Yeni bir proje oluşturarak görsel düzenlemeyi aşağıdaki gibi yapalım.
Görsel düzenlemeler zevkinize kalmış bir durum. Benim yaptığım düzünlemeler ise şöyledir;
Butonların hepsini seçerek policy özelliklerini ignored olarak düzendikten sonra gridlayout kullandım.
Üstteki Label için max height 30px, alttaki labe için max height 50px ayarladım. ayrıca alttaki label için 12punto ve kalın yazı tipini seçtim. Her iki label için hizalamayı sağa ayarladım.
Form gövdesine verticallayout uygulayarak min size özelliğini 150x250px olarak ayarladım. Varsayılan boyu ise 250x350px değerinde...
Stylesheet kullanarak görsel zenginleştirme mümkün ancak şimdilik burada bırakalım ve kodlama kısmına odaklanalım.
1 butonundan başlayalım. Buton üzerine sağ tıklayarak Go to slot u seçelim.
Karşımıza gelen pencereden clicked() i seçelim.
Kod yazacağımız fonksiyon hazır olarak karşımıza gelecektir. Sinyal/Slot bağlantısı otomatik yapıldı. Bize düşen sadece kod yazmak olacak...
İstediğimiz oldu... Şimdi klavyeden 1 tuşuna basıldığında da aynı fonksiyonun çalışmasını istiyorum. Bunun için QKeyEvent sınıfından faydalanmalıyım. Header dosyasına keyPressEvent fonksiyonunu yazalım.
1 tuşuna basılmış ise 1 butonun fonksiyonunu çağırdık. Bu aşamada kodu tüm rakam tuşları kapsayacak şekilde kopya yapıştır ile düzenleyip geliştirelim. Bu sırada sıfır için yine özel bir durum olduğunu fark ettim. Label içeriğimiz hali hazırda sıfır ise sıfır eklememeliyiz...
C tuşunun fonksiyonunu yazalım. Tasarıma yardımcı (üstteki) bir label eklemiştik. rakalmarımızı silmeden önce sonucu (daha hesaplamasakta...) labek_ek e aktarıp label ı sonra silelim. Label zaten 0 ise label_ek i de silelim... (biraz karıştı sanki :))
Nokta butonunun fonksiyonunu yazalım. Burada da özel bir durum var. label nokta var ise nokta eklememeliyiz... Bu durumu kontrol etmek için contains() fonksiyonundan yararlanıyoruz.
Geri tuşunu kodlayalım. Mevcut text bir karakterden uzun ise soldan uzunluk-1 kadarını alıyoruz. Aksi durumda karakteri "0" olarak set ediyoruz.
Hesaplama tuşları dışındaki bölümü bitirdik. Bu aşamada hesaplama kısmını nasıl tasarlayacağımıza karar vermeliyiz. Bir rakam yazdık sonra + tuşuna basınca ekran davranışımız nasıl olmalı..? rakamı ve işlem operatörünü yardımcı label a atalım. Tabi bu arada rakamı bir değişkende saklayalım...