Merhaba, daha önceki “QML Hakkında – 1” yazımda QML’ e temel bir giriş yapmıştım, bu yazımda ise geri kalan başlıkları anlatacağım, iyi okumalar.

  1. QML nedir?
  2. Neden QML kullanıyoruz?
  3. QML sözdizimi.
  4. Temel QML kavramları.
  5. QML’yi nasıl yapılandırıyoruz?
  6. QML kullanıcı arayüzlerini nasıl oluştururuz?

Başlamadan önce işleyişi daha iyi kavramak için bazı kavramları özetlemek istiyorum:

  • QML Motoru:
    QML motoru, QML belgelerinden kaynak kodu yükler. Bir QML belgesinde bir id ile tanımlanan nesneleri tutan QML bağlam hiyerarşisini yönetir. Her QML tipi, QML tiplerine veri aktarmak için gerekli olan bir QML bağlamında örneklenir.
  • QML Belgesi:
    QML belgesi, iki bölümden oluşan bağımsız bir QML kaynak kodu parçasıdır (genellikle .qml dosyası olarak saklanır):
    1- QML motoruna belge içinde hangi Qt modüllerinin, JavaScript kaynaklarının ve bileşen dizinlerinin kullanıldığını söyleyen bir veya daha fazla içe aktarma deyimi. İçe aktarma (import) ifadeleri her qml belgesinin en üstüne yerleştirilmelidir
    2-QML belgesinin, örnekleyebileceğiniz nesnelerin hiyerarşisini tanımlayan bir kök nesne bildirimi.
  • Modüller:
    Modül, belirli özellikler veya işlevler sağlayan ilgili sınıfların ve işlevlerin bir koleksiyonudur. Her modül, belirli bir dizi sorunu çözmek veya uygulama geliştirmek için belirli araçlar sağlamak üzere tasarlanmıştır.
    Örneğin, Qt Quick modülü, geliştiricilerin uygulamaları için modern, akıcı ve dinamik kullanıcı arayüzleri oluşturmalarına yardımcı olmak için tasarlanmıştır ve duyarlı ve görsel olarak çekici bir kullanıcı deneyimi sağlamaya odaklanır.
    Qt’deki modülleri kullanarak, her şeyi sıfırdan yazmadan uygulamanıza kolayca yeni işlevler ekleyebilirsiniz. Bu da Qt’yi karmaşık uygulamalar geliştirmek için güçlü ve esnek bir çerçeve haline getirir.

Bir QML öğesinin temel yapısını keşfettiğimize göre, şimdi QML’nin dört temel yapı taşını inceleyelim. Bu yapı taşları QML’nin temelini oluşturur ve Qt uygulamalarında dinamik ve etkileşimli kullanıcı arayüzleri oluşturmak için gereklidir. Bu yapı taşlarının nasıl kullanılacağını anlayarak, bakımı ve genişletilmesi kolay, görsel olarak çekici ve duyarlı uygulamalar oluşturabileceksiniz.

Bir QML Öğesi Dört Ana Yapı Taşından Oluşur:

  • Tree of Elements: Object Declarations (Öğeler Ağacı: Nesne Bildirimleri)
  • Properties (Özellikler)
  • Bindings (Bağlayıcılar)
  • Notifications – Signal and Handler Event System (Bildirimler – Sinyal ve İşleyici Olay Sistemi)

Temel yapı taşlarınıda öğrendiğimize göre aşağıdaki örneği inceleyebiliriz:

import QtQuick // Modül içe aktarma

// nesne bildirimi (object declaration.)
Window {
    // Tanımlayıcı (identifier)
    id: root
    //  özellikler (properties)
    width: 640
    height: 480
    visible: true
    title: qsTr("Hello World")

    // iç içe bir nesne bildirimi
    Rectangle {
        // genişlik ve yükseklik bağlayıcıları (bindings)
        width: root.width / 2
        height: root.height / 2
        color: "#00414a"
    }

    // sinyal işleyici (signal handler)
    onWidthChanged: (value)=>{
        console.log("width changed to: " + value)}
}

Nesne bildirimi (Object decleration): bir QML belgesini, iç içe geçmiş nesne bildirimlerinin hiyerarşik bir koleksiyonu olarak düşünebilirsiniz. Yukarıdaki örnekte, kök nesne olarak bir Window bildiriyoruz ve bir Rectangle öğesini içine alıyoruz. Bu, kök nesnenin bir alt nesnesi haline gelir.

Tanımlayıcı(id) özeldir. Her QML öğesi yalnızca bir id‘ye sahip olabilir.

Özellikler (Properties): bir nesnenin statik bir değer atayabileceğiniz veya daha karmaşık işlevler oluşturmak için dinamik bir ifadeye bağlayabileceğiniz bir niteliğidir. Diğer nesneler bir özelliğin değerini okuyabilir. Örnekte özellikleri, boyut, konum, renk ve pencere başlıkları olarak tanımladık.

Bağlayıcılar (Bindings): Bir nesnenin özelliğine, açıkça yeni bir değer atanana kadar sabit kalan statik bir değer atanabilir. Ancak, QML’den ve onun dinamik nesne davranışı için yerleşik desteğinden en iyi şekilde yararlanmak için, çoğu QML nesnesi özellik bağlarını kullanır.
Özellik bağları, farklı nesne özellikleri arasındaki ilişkileri belirlemenizi sağlar. Bir özelliğin bağımlılıkları değer olarak değiştiğinde, özellik belirtilen ilişkiye göre otomatik olarak güncellenir.

Sinyal ve İşleyici Bildirim Sistemi (Signal and Handler Notification System): Uygulama ve kullanıcı arayüzü bileşenlerinin birbirleriyle iletişim kurması gerekir. Örneğin, bir düğme kullanıcının üzerine tıkladığını bilmelidir. Düğme, durumunu belirtmek veya bazı mantıkları gerçekleştirmek için renk değiştirebilir. Ayrıca, uygulamanın kullanıcının düğmeye tıklayıp tıklamadığını bilmesi gerekir. Uygulamanın bu tıklama olayını diğer uygulamalara iletmesi gerekebilir.
QML, sinyalin olay olduğu ve bir sinyal işleyicisi aracılığıyla yanıtlandığı bir sinyal ve işleyici mekanizmasına sahiptir. Bir sinyal yayıldığında, ilgili sinyal işleyicisi çağrılır. İşleyiciye kod veya diğer işlemler gibi mantık yerleştirmek, bileşenin olaya yanıt vermesini sağlar.
Bir sinyal işleyici, bu sinyale verilecek yanıtı uygulayacağımız fonksiyondur.

Buraya kadar okuduğunuz için teşekkürler, sonraki yazılarda Properties ve Bindings konularını biraz daha açmayı ve veri türleri, custom signals, custom properties, metod tanımlama konularınıda anlatmayı düşünüyorum, iyi çalışmalar.

Yorum bırakın

Trend

WordPress.com’da Blog Oluşturun.