intranet-qt-stretch-kullanimi

QT'de Stretch Kullanımı
 

        Bir layout ekledik diyelim. Bu layotun içine widget'larımızı yerleştirdik. Böyle bir durumda QT otomatik olarak tüm widgetlara size atar. Bunu orantılı ve düzgün bir şekilde yapar.

        Şimdi herhangi bir şekilde bizim line editlerimizden birinin size'ının mesela başka bir line editten farklı olmasını isteyelim. Bu durumda yapmamız gereken ya spacer kullanacağız yada stretch kullanacağız.

        Widget'lara stretch faktörü uyguladığımızda widget'lar belirlediğimiz oranda yer kaplarlar. Ama hiçbir zaman minimum boyutlarından daha düşük bir değer almazlar. Stretch kullanımıda ise mesela layoutumuzu 100 parçaya bölüp, her bir widget'ın bu parçalardan ne kadarını kaplıyacağını belirtiriz.

        Şimdi aşağıdaki örneği inceleyelim; LayoutColumnStretch  sırasıyla 0,10,0,20,70 dir. Yani ilk widget 0 olduğundan Qt default size'ında gelecektir. 2. widget kalan alanın 10 birimini alacak, 3. widget da default ta kalırken geri kalan widget 20 lik alanı kaplayacak. Spacer ise layoutta kullanılmayacak tüm alanı dolduracaktır.

 
 

Şimdi basit bir örnekle nasıl yapıldığına bakalım. Öncelikle qt designer'ı açıp aşağıdaki tasarımı yapalım.

Daha sonra tüm widget'ları seçip Layout in a Grid'e tıklayalım. (ctrl ile widget üzerine gelinerek seçilir)
 
 
        Widget'ları seçip Layout in a Grid'e tıkladığımızda otomatik olarak layout oluşur ama default değerlerle gelir. Default olarak strecth kullanılmaz. Öncelikle oluşturduğumuz layout'u seçelim. Layout'u seçtiğimizde gelen property'lerden layoutColumnStretch sekmesindeki değerleri degişterelim. Dikkat değerlerin sırası layout içindeki widget sırayla gider. Yani ilk değer olan 0 mesela layout içindeki Kullanıcı Kodu adlı Qlabel'e denk gelir. 10 ise Kullanıcı Kodundan sonraki QlineEdit'e denk gelir.
 
 
        Burda mesela toplamı 100 parçaya böldük. Ve widget'larımızı buna göre dağıttık. 10 a da bölebilirdik. O zaman da mesela şu anda 0,10,0,20,70 olan sıralama 0,1,0,2,7 olacaktı. Dikkat tamamına bir değer atamadık. Bunun anlamı  0 olanların kapladığı yerden arta kalan alan 100 e bölünüp o alan üzerinden dağıtım yapılacak. Bu yüzden dağılımda tam hakimiyet istenirse kesinlikle tüm widgetlara bir değer atanıp default bırakılmamalılar.
 
        Aşağıda bu şekilde tasarlanmış bir widgetın farklı çözünürlüklerdeki ekran görüntülerini inceleyebilirsiniz. Normal boyutlarda;
 
 
        Tam ekran;