Cuma, Temmuz 28, 2006

Pabbi minn

Pabbi minn

Ó pabbi minn
Hve undursamleg ást þin var
Ó pabbi minn
Þú ávalt tókst mitt svar

Aldrei var neinn
Svo ástuðlegur eins og þú
Ó pabbi minn
Þú ætíð skilðir allt

Lidin er tíd
Er leíddir þú mig lítið barn
Brósandi blítt
Þú breyttir sorg í gleði

Ó pabbi minn
Eg dáði þína léttu lund
Leikandi kátt
Þú lékst þér á þinn hátt

Ó pabbi minn
Hve undursamleg ást þin var
Æskunnar ómar
Ylja mér í dag

Lidin er tíd
Er leíddir þú mig lítið barn
Brósandi blítt
Þú breyttir sorg í gledi

Ó pabbi minn
Eg dáði þína léttu lund
Leikandi kátt
Þú lékst þér á þinn hátt

Ó pabbi minn
Hve undursamleg ást þin var
Æskunnar ómar
Ylja mér í dag

Ó pabbi minn
Ó pabbi minn
Ó pabbi minn

My papa

Oh my Papa
How wonderful your love was
Oh my Papa
You always took my side

Never was one
As loving as you
Oh my Papa
You always knew me well

Time has passed
Since you held my child's hand
Smiling sweetly
You turned sorrow to joy

Oh my Papa
I loved your joyful spirit
With happy ease
You played in your own way

Oh my Papa
How wonderful your love was
Childhood memories
Warm me today

Time has passed
Since you held my child's hand
Smiling sweetly
You turned sorrow to joy

Oh my Papa
I loved your joyful spirit
With happy ease
You played in your own way

Oh my Papa
How wonderful your love was
Childhood memories
Warm me today

Oh my Papa
Oh my Papa
Oh my Papa

Salı, Temmuz 25, 2006

Doxygen

orada, burada, şurada, heryerde.

Çarşamba, Temmuz 19, 2006

Cumartesi, Temmuz 15, 2006

QPainter nedir?

Düşük seviye (lov-level) boyama; örneğin widgetler üzerinde. Basit çizgilerden tutun da karmaşık şekillere kadar, paylar, chrods'lar çizmeye yarar. Ayrıca hizalanmış metin ve pixmapler de yaptırtabilinir.

Tipik kullanımı şöyledir:
-bir painter oluştur (contruct)
-kalemi ayarla (set pen)
-çiz
-painter'i yoket

Örneğin:
void SimpleExampleWidget::paintEvent()
{
QPainter paint( this );
paint.setPen( Qt::blue );
paint.drawText( rect(), AlignCenter, "The Text" );
}

Yapıcı:
QPainter ()
QPainter ( const QPaintDevice * pd, bool unclipped = FALSE )
QPainter ( const QPaintDevice * pd, const QWidget * copyAttributes, bool unclipped = FALSE )

QDirectPainter sınıfından türemiştir. Kullanımı basittir ve kullanabilceğiniz birsürü ayarları mevcuttur, iki nokta üstüste biri altta biri üstte:
-font() geçerli fontu döndürür. Eğer olmayan bir fontu set etmeye kalkarsanız qt ona yakın olan bir tanesini sizin için seçer.Başka bir deyişle font() sizin setFont() ile belirlediğiniz fontu döndürür. fontInfo() da aynı şeyi yaparmış.
-brush() şekillerin, mesala dairenin, doldurulmasında kullanılacak rengi veya paterni döndürür.
-pen() ise çizgilerde veya kenarlıklarda kullanılacak kalemin rengini veya stiple'ını döndürür.
bacgroundMode() "Opaque" veya "Transparent"dir bacgroundColor() kullanılsın veya kullanılmasın.
-bacgroundColor yalnızca backgroundMode() opaque iken ve pen() stiple iken uygulanabilir. Bu durumda stiple'daki arkaplan pixellerin rengini belirler.
-rasterOp() işlevi ise çizilen pixellerin halihazırda orada bulunanlar ile etkileşiminin nasıl olacağını söyler.
-brushOrigin() tiled brushların orijinidir, normalde pencere orijinidir.
-viewport(), window(), worldMatrix() ve birçoğu painter'in koordinat dönüştürme sistemini yapılandırır.
-hasClipping adından da anlaşılıyor.
pos() geçerli pozisyon, moveTo() ve lineTo() ile set edilen yer.

QGridview nedir?

QGridview fixed-size ızgaralar için bir soyut (abstract) ana sınıf işlevini görür. Hücrelerin boyutu sabittir (fized). Sol üstteki hücre 0,0 iken sağ alttaki numRows()-1,nımCols()-1 olur.

numRows, numCols, cellWidth ve cellHeight tanımlanabilir. Hücre içeriğini çizdirmek için saf sanal (pure virtual) paintCell() işlevini yazmalıyız.

ensureCellVisible() ile belirli bir hücrenin görünebilir olması sağlanır. rowAt() ve columnAt() ile verilen x,y koordinatlarını kullanarak hücreyi buluruz.

ızgaranın dimensionındaki değişimleri gözlemek için dimensionChange() metodunu aşırı yüklemek gerekir.

QGridView QScrollView'i temel alan bir sınıftır. Bir çok eş boyutlu hücreyi ve kaydırılabilir pencerede çizmeye yarar. Eğer değişik boyutlu hücreler kullanılacaksa QTable kullanılmalıdır.

void QGridView::paintCell ( QPainter * p, int row, int col ) [pure virtual protected]
Bu saf sanal işlev belirli bir hücreyi boyamak için kullanılır. Her hücre için kendiliğinden çağırılır. Hücrenin güncellenme işlemlerinde de çağırılır. Bu fonksiyon çağırıldığında painter açık olmalı ve açık kalmalı.

void QGridView::paintEmptyArea ( QPainter * p, int cx, int cy, int cw, int ch ) [virtual protected]
p painterinin arkaplan rengi kullanılarak cw pixel genişliğinde ch pixel yüksekliğinde cx,cy den başlayarak dikdörtgen çizer.

Cuma, Temmuz 14, 2006

KDE-eclipse

Eclipse ile qt programlama denemesi için harcanan bir günden sonra bunu görmek yine de sevindirici.

Çarşamba, Temmuz 12, 2006

mingw

http://sourtimes.org/show.asp?t=mingw&nr=y&pt=mingw32

Qt & mingw & windows

Qt'nin windows'ta nasıl çalıştığını test etmek için bir kurulum denemesi yaptım. Mingw projesiyle olay çok kolaymış. http://www.trolltech.com/download/qt/windows.html adresinden mingw'li bir sürümü indiriyoruz. Eğer sisteminizde Mingw yoksa uygulama indirip kuruyor. Akabinde tek tıklama ile kütüphaneleri de derliyorsunuz. Artık kodlarınızı qmake ve make ikilisi ile derleyebiliyorsunuz.

Qt socket programlama

Google'dan aratınca belge ve kod bulunabiliyor.

Pazartesi, Temmuz 10, 2006

Qt'ye Nereden Başlamalı?

Öncelikle başlamalımıyım diye düşünmek lazım:)
Cevap evet ise neler gerekiyor bir gözatalım. Bir kere Qt bir kütüphane, bir dil değil. C++ kodlama yapıcaz, yani C++ bilmek gerekiyor. Neredeyse bir dil kadar özellikleri olduğunu söyleyebilsek de(QString gibi kendi veri türleri var mesela) C++'ın tüm özelliklerini içerdiğinden C++ bilmeden bir pencere 2 buton yapayım diyerek girişmenin bir manası yok. Temel olarak kütüphane nedir, bir programlama dili ile (burada C++) bir kütüphane nasıl kullanılır bilmek gerekiyor.

Daha sonra her programlama diline başlarken olduğu gibi bir "Hello World" uygulaması yazmak gerekiyor. Temel bir "Hello World" programı burada, az daha gelişmiş Türkçe olanı da burada mevcut.

Bunu yaptık, şimdi ne yapmalıyız? http://doc.trolltech.com/3.3/tutorial.html belgesindeki 14 bölümü bitirmek iyi bir başlangıç olur. Bunu yaparken de bir taraftan yazmak istediğimiz program için gerekli olabilecek widgetleri (parçacık, veya zımbırtı) daha bir yakından inceleyebiliriz. Yüzlerce widget, bunların metodları, üyerleri, sinyalleri ve slotları olduğu için bunları sadece ihtiyaç olduğunda öğrenmek uygun olacaktır.

Daha sonra ne yapmalıyız? Hemen istediğimiz programı yazmaya başlamak iyi olur mu? Bundan önce tasarımla ilgili konulara bakmak iyi olur kanaatindeyim. Yani Qt Desiner kullanımı. Burada pencerelerin, menülerin, butonların vs. ne kadar kolay oluşturulduğunu göreceğiz. .ui dosyaları nedir, nasıl kullanılır, bunu projemizde nasıl kullanırız, bunun gibi konuları öğrenmemiz gerekiyor. Aksi taktirde Tutorial 1'deki konularla sadece kod yazarak kullanıcı arabirimi oluşturmak günlerimizin heba olmasına yol açabilir. Bunun için gerekli belge http://doc.trolltech.com/3.3/tutorial2.html.


Buraya kadar kendimizi istediğimiz programı yazmaktan alıkoyabildiysek 1 gün daha sabredebiliriz değilmi:) Bu aşamada herhangi bir dilde yapılan temel işlemlerin Qt'de nasıl yapıldığını görmemiz gerekiyor. QString, QFile, QList vb.. konulara bakmadan eski C++ kodlama alışkanlıklarımızla program yazarsak bu kolaylıkların farkına varmadan çok zamanda verimsiz kodlar yazabiliriz. Son olarak Qt'nin Temel Sınıflarına, Sınıf Hiyerarşisine ve resim görünümüne bir göz atmakta fayda var.

Evet artık ilk ciddi programımızı yazıp Qt kodlama tecrübesi kazanmaya başlayabiliriz.

Qmake nedir?

Kısaca Trolltech tarafından yazılan farklı derleyici ve platformlar için Makefile oluşturan bir araçtır bkz. qmake Manual.

Elle Makefile yazmanın zorluğunu gideren harika bir program. En basit kullanımı şöyle:
$cd projedizini
projedizini$ qmake
projedizini$ qmake projedizini.pro
projedizini$ make
projedizini$./projedizini
Kısaca anlatmak gerekirse, bulunduğumuz dizinde "qmake" komutu çalıştırdığımızda tüm dizin proje olarak ele alınıyor ve kaynak kodların bir listesini tutan projedizini.pro dosyası oluşuyor. Bu .pro dosyası taşınabilir. Yani kodları ve bu .pro dosyasını istediğimiz bir sisteme taşıyıp kalan komutları orada verebiliriz. "qmake projedizini.pro" komutu ile bulunduğumuz platforma ve kullandığımız derleyiciye yönelik bir Makefile oluşturuyor. "make" ile çalıştırılabilir dosyayı üretiyoruz ve bunu çalıştırıyoruz. Çok da karmaşık olmayan parametrelerle daha ayrıntılı Makefile'lar oluşturmak mümkün. Örneğin:
qmake -t vcapp -o hello.dsp hello.pro
Visual Studio kullanıcıları için .dsp dosyası üretiyor. Harika değil mi:)

Qt nasıl öğrenilir?

Eğer Qt Asistant kurduysanız orada Qt'nin nasıl öğrenileceği ile ilgili geniş bir yazı bulabilirsiniz (How to Learn Qt). Kurmadıysanız Qt Asistant'ın tüm belgelerinin olduğu gibi bunun da online olanı mevcut (http://doc.trolltech.com/3.3/how-to-learn-qt.html).

Burada anlatıldığına göre:
1. Qt'nin resmi kitabı. 30 küsür dolara satılan bu kitabın ücretsiz pdf'si internette mevcut. Qt4 için olanı geçen hafta duyuruldu ve 8-9 ay sonra pdf'si üretilecek deniyor. Önceki de bu kadar bir süreden sonra yayınlanmış.
http://www.phptr.com/content/images/0131240722/downloads/blanchette_book.pdf
Bu baştan sona herşeyi içeren bir referans kitap niteliğinde.

2. Adresiniz http://www.trolltech.com/training/ . Tam incelemedim, sertifikalı kurslar falan var.

3. İlk olarak okunması tavsiye edilen Whitepaper'lar şurada bulunuyor: http://www.trolltech.com/products/qt/learnmore/whitepapers

4. Kısaca Tutorial 1 dediğimiz 14 bölümden oluşan daha çok C++ kodu ağırlıklı belge. Hızlı başlangıç için bu belgeden başlamak tavsiye edilebilir. 8. bölümde anlatılmaya başlanan basit bir oyun uygulaması her bölümde üzerine eklenerek 14. bölüm sonunda basit bir tank atış oyununa dönüşüyor.
http://doc.trolltech.com/3.3/index.html

5. Tutorial 2 daha gerçekçi örnekler içeriyor. Gerçekçi derken pencereler, menüler, bunların tasarımının nasıl yapıldığı, dosya açma-kaydetme, araç çubukları falan.
http://doc.trolltech.com/3.3/tutorial2.html

6. Eğer kolayca tasarım yapmak istiyorsanız Qt Designer Manuali okumalısınız. Daha sonra dönüp 4 ve 5 i okuyabilirsiniz.
http://doc.trolltech.com/3.3/designer-manual.html

7. Qt Object Model and Signals and Slots daha derin konuları içeriyor.

8. Qt ile ilgili belli bir konu başlığı arıyorsanız (mesela projede biyerde tıkandıysak) http://doc.trolltech.com/3.3/overviews-list.html belgesine bakıyoruz.

9. http://doc.trolltech.com/3.3/examples.html örneklerin olduğu sayfa oluyor.

10. Yeni kurulan Qt Türkiye sayfası Türkçe belgelere ulaşmamızı sağlıyor.

Sonuç olarak Qt, aradığınız herşeyi bulabileceğiniz belgelerle geliyor.

Qt'nin açılımı nedir?

Bilmiyom nedir:)

Maazinde bir tarih yaşaaaaaaar

Yaaaaşaaaaaaa Fenerrrrrrbahhhçeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

Hadi bakalım kolay gelsin

bir acayip zor yarışşşşşşş.