4.2.2-Form Tasarımı

Projenizdeki arayüz(.ui) dosyalarından herhangi birine çift tıklayarak tasarım moduna geçebilirsiniz.


Pencereleri kısaca anlatmak gerekirse:
Widget Box: Qt GUI bileşenlerinin listelendiği pencere. Dilediğiniz bileşeni sürükle-bırak yöntemi ile formunuza ekleyebilirsiniz.
Action Editor: Action'ları yönettiğimiz penceredir. Sürükle-bırak yöntemi ile dilediğiniz action'ı araç kutusu ve menülere ekleyebilirsiniz.
Property Editor: Seçilen bileşenin özelliklerinin listelendiği ve değiştirildiği pencere.
Object Inspector: Form üzerindeki bileşenlerin listesini verir. Tüm bileşenlere buradan da erişebilirsiniz. Örneğin eklediğiniz bir bileşen form sınırlarının dışında ya da başka bir bileşenin altında kalıp görünmediğinde, buradaki listeden bileşene ulaşabilirsiniz/seçebilirsiniz.

Edit ve Layout Araç Kutuları:

Sırasıyla:
Edit Widgets: Bileşenleri düzenleme moduna geçer.
Edit Signals/Slots: Sürükle-bırak yöntemi ile rahatlıkla signal/slot tanımlayabileceğiniz Signals/Slots moduna geçer. Örneğin bir butona tıklayarak oluşan ok şeklini formun üstüne çekip bırakırsanız ekrana "Configure Connection" penceresi gelecektir.


Bu pencerenin sol kısmındaki listede buton'a ait olaylar(Signal), sağ kısmında ise form'a ait olaylar(Slot/Event) listelenir. Butonda "clicked()", formdan da close()'u seçtiğimizi farzedelim. Tüm bunlar şu anlama gelecektir; buton'a tıklandığında formu kapat. Tıpkı aşağıdaki resimde görüldüğü gibi


Edit Buddies: Bu özelliği kullanabilmek için & (Ampersand) karakteri ile  kısayol tanımlamayı bilmemiz gerekir. Örneğin bir butonun text özelliğine "Kapa&t" yazdığınızda bu butona alt+t klavye kısayolu ile ulaşılabileceğini belirtmiş olursunuz. Yani & (Ampersand) karakteri kendinde sonra gelen karakterin altını çizip, onu kısayol yapacaktır. Peki QLineEdit gibi kullanıcıdan veri girişi bekleyen bir bileşene nasıl kısayol tanımlayabilirsiniz? İşte buddies özelliği ile QLabel ve QLineEdit bileşenleri birbirine bağlanarak QLabel'in kısa yolu ile QLineEdit'e fokuslanabilir. (erişilebilir.)


Bu resimde görüldüğü gibi "alt+k" ile kullanıcı adı, "alt+ş" ilede şifre girişi için hazırlanmış QLineEdit'a erişilebilir.
Edit Tab Order: Sekme düğmesi (tab) ile bileşenler arasında gezinirken hangi sıralamayı kullanacağımızı belirttiğimiz moddur.


Örneğin bu resimde sekme düğmesi ile önce kullanıcı adı, sonrasında şifre ve daha sonrasında kapat butonuna geçileceği belirtiliyor.

Buradan sonraki düğmeler layout işlemleri ile ilgili olduğu için layout hakkında kısa bir bilgi vermek istiyorum.
Layout (Yerleşim), içerisine bileşenleri yerleştirdiğimiz ya da bileşenleri gruplandırdığımız yapılardır. Form tasarımın olmazsa olmazlarındandır. Örneğin form boyutunun değiştiğinde bileşenlerinde yeniden boyutlandırılması için kullanılabilir.

Lay Out Horizontally (QHBoxLayout): Bileşenleri bir layout içerisinde yan yana sıralar.

tek satır çok sütun (1xN)

Lay Out Vertically (QVBoxLayout): Bileşenleri bir layout içerisinde alt alta sıralar.

çok satır tek sütun (Nx1)

Lay Out Horizontally in Splitter (QSplitter): Lay Out Horizontally (QHBoxLayout) gibidir. Tek farkı bileşenlerin arasına ayırıcı ekler. Bu ayırıcı, bileşenleri test orantılı bir şekilde yeniden boyutlandırmaya yarar. Örneğin bu örnekte birinin genişliği artarken diğerininki azalır.

tek satır çok sütun (1xN)

Lay Out Vertically in Splitter (QSplitter): Lay Out Vertically (QVBoxLayout) gibidir. Tek farkı bileşenlerin arasına ayırıcı ekler. Bu ayırıcı, bileşenleri test orantılı bir şekilde yeniden boyutlandırmaya yarar. Örneğin bu örnekte birinin yüksekliği artarken diğerininki azalır.

çok satır tek sütun (Nx1)

Lay Out in a From Layout (QFormLayout): Lay Out Vertically (QVBoxLayout)'un iki sütunda oluşan bir türüdür diyebiliriz. Basit form tasarımları yapmak için kullanılabilir. Örneğin şu resimdeki gibi

çok satır iki sütun (Nx2)

Fakat tek özelliği bu değildir. "Add From Layout Row" özelliği ile hem yeni bileşen ekleme hemde buddy bağlantılarını tek bir pencere üzerinden yapabilirsiniz. Örneğin


Lay Out in a Grid (QGridLayout): Lay Out Horizontally (QHBoxLayout) ve Lay Out Vertically (QVBoxLayout)'un birleşimidir. Yani satır ve sütun sınırlaması yoktur. Herbir satır ve sütuna bileşen ekleyebiliriz. İşte örnek bir formun ekran görüntüsü.


Go to Slot 
Son olarak "Go to Slot" özelliğinden bahsetmek istiyorum. Daha önce herhangi bir sinyali oluşturduğumuz bir slot'a bağlayamıyorduk, yani tasarım anında bu işlemi gerçekleştiremiyorduk. Bunu için sınıfın tanımında bir slot tanımlayıp, bu slot ile bağlantı kuracağımız sinyali kurucu fonksiyon içerisinde connect() ile birbirine bağlayıp, ardından slot fonksiyonun kendisini yazıp ve nihayet kodlamaya başlıyorduk. İşte "Go to Slot" özelliği ile tüm bunlar tarih oluyor.  (Tarih oluyor derken, dilerseniz rezillik cekmeye devam edebilirsiniz.)

Örneğin buton'a tıklandığında, değişikliklerin kaydedilip kaydedilmeyeceğini soran ve cevaba göre bir takım işlemler yapıp uygulamayı kapatan kodları yazmak istediğimizi farzedelim: Bunun için buton üzerinde sağ tık yapıp "Go to Slot" komutunu verin. Ekrana seçtiğiniz butona ait sinyalleri listeleyen bir pencere gelecektir. Listeden clicked() sinyalini seçin. Evet şimdi direk kodlamaya başlayabilirsiniz. Az önce anlattığım tüm o dolanmaçlı işlemler Qt Creator tarafından otomatik olarak gerçekleştirilecektir.

Yorumlar