Tarih = 3/10/2021

Görsel Programlama

QTFrameworkSesion(3 – 3.1 – 3.2)

Herkese Merhaba;

Bir önceki yazımda qt framework ile ilgili genel bilgiler vermiştim bu yazımda ise ilgili framework ile ilgili form elementlerini anlatmayı düşündüm.

Editorun Genel Özellikleri

Qt framework de bir proje tasarlamak için öncelikle geçen yazımda bahsettiğim qt creator uygulamasını indirmemiz ve bunu build etmek için gerekli dll yüklememiz gerekiyor.

word image

New project menüsünde birden fazla opsiyon mevcut bir bu yazımızda form button elementlerini tanıtacağımız için bir widget uygulaması oluşturuyoruz. Ardından projenin lokasyonunu build makerı belirledikten sonra bir diyalog uygulaması açıyoruz main windows projelerine ilerleyen yazılarımızda değineceğiz şuan için ufak bir proje olduğu için dialog kütüphanesi bizim için yeterli.

word image 1

Buradaki kilit opsiyon kits menüsünde burada projenin hangi kitler üzerinden build edeceğini bize soruyoruz.Benim gibi açık kaynak kullananlar için otomatik uygulama setupdan default kitler yüklenmiş gelecektir fakat extra olarak başka kitleride dahil etmek mümkün.

Projenin Katmanlarını Tanımak

Editorun yapısı gereği karşımıza 3 katmanlı bir proje oluşuyor.
word image 2
Burada Headers kısmını bir html sayfasındaki js ve css dosyalarını projenin her yerinde kullanmak için eklediğimiz index sayfası olarak düşünebilirsiniz fakat burada unutulmaması gereken c++ düşük seviyeli bir dil olduğundan ötürü kod yoğunlu fazla kütüphaneler barındırıyor bu sebeple burada çok fazla import etmek yanlış olacaktır.Sources kısmında ise veriyi işlediğimiz UI arka yüzü olarak düşünebiliriz.Forms kısmında ise adından anlaşılacağı üzere UI kısmı burada xml olarak form elementlerini editor otomatik bizim için oluşturuyor.UI kitleri qt framework’un baya bir zengin ilerleyen yazılarda bunlardan faydanacağız.

Form Button Elementleri

Button yapılarında winform dan daha esnek olduğunu düşünüyorum. Sinyal ve Slot denilen iki adet kavram var eğer bir form nesnesi bir eylem yaptığı zaman mesela butona tıkladığı zaman bir sinyal oluşturması için gerekli yapılar otomatik editor tarafından sunuluyor bize örnek olarak bir gönder ve iptal butonu tasarlayalım ve bir input area ile mesajı messagebox ile ekrana basalım.

word image 3

Form Menüsünden edit sinyal slot diyerek iptal butonuna bir reject slotu gönderiyorum.Slotun sinyali alması içinde iptal butonuna bir clicked özelliği tanımlıyorum.Yani kısaca iptal butonuna basılınca uygulamamızın kapanmasını istiyoruz.

Gönder butonunda ise daha complike bir eylem yapacağımız için buradaki slotu manuel yazalım.Butonun üzerine sağ tıklayarak go to slot diyoruz ve istediğimiz sinyal opsiyonunu (Clicked() ) tanımlıyoruz.Daha sonra sources katmanında dialog.cpp katmanında bize bir void fonksiyon oluşturuyoruz burada istediğimiz input text ini alıp kullanıcıya bastırabiliriz.

word image 4

Bu şekilde sinyal ve slot kavramını öğrenmiş olduk diğer bir özellik ise form elementlerine tab order kazandırmak

word image 5

Burada edit tab order dediğimiz tab basınca ilk hangi nesnenin aktif olacağını belirleyebiliriz.Şimdi gelelim diğer bir slot özelliği kazandırma olayına burada yapacağımız form ui herhangi bir işlem yapmadan proje başladığında butona tıklandığında yapılacak olan işi ilk proje başlarken tanımlıyoruz.

Headers kısmında private slot diye bir interface tasarlayalım.

word image 6

Daha sonra bu interface bir nesne verelim.bunuda dialog.cpp yapmamız gerekir çünkü dialog.cpp default olarak dialog.h dan türüyor.

word image 7

Burada bu butona basıldığında bu fonksiyonun çağrılmasını arzu ediyoruz. Tabi bunuda proje ilk başlarken bir connect fonksiyonu yardımı ile yapıcaz.

word image 8

Kod ‘dan anlaşılacağı üzere ilk olarak UI kitleri yükleniyor form oluşturuluyor daha sonra ise connect fonksiyonuna btnConnect adlı butonu veriyoruz ve bunun push button sınıfından türetilmesi gerekiyor şeklinde parametrelerinizi tanımlıyoruz.Daha sonra ise Dialog kütüphanesini ata sınıf olarak kabul edip ilgili fonksiyonumuzu buraya tanıtıyoruz.

Son

Diğer yazımızında butonların repeat checkable özelliklerinden bahsedeceğim umarım faydalı bir yazı olmuştur.Herkese Sağlıklı Günler.

By