Qt ye Giriş. Can Kavaklıoğlu. 10 Temmuz 2007. Trolltech in Qt 4.0 alt yapısını kullanarak programlama yapmak için gerekli kütüphaneleri yüklemek



Benzer belgeler
Qt ye Giriş. Can Kavaklıoğlu. 19 Temmuz Trolltech in Qt 4.0 alt yapısını kullanarak programlama yapmak için gerekli kütüphaneleri yüklemek

B02.8 Bölüm Değerlendirmeleri ve Özet

int printf (const char *format [, argument,...]);

ANALOG LABORATUARI İÇİN BAZI GEREKLİ BİLGİLER

Uzem Eğitmen Girişi. Şekil 1. Sisteme girdikten sonra Şekil 2 deki ekran karşımıza çıkacak. Bu ekrandaki adımları kısaca tanıyalım.

Temel Bilgisayar Programlama

Tasarım Raporu. Grup İsmi. Yasemin ÇALIK, Fatih KAÇAK. Kısa Özet

in Kullanımı tamamlamış gerçekleştirmiş

1. Mesaj Tipi ve Mesaj Fonksiyonu Bazında Bildirim Mail Adresi Tanımlama Đşlemleri

MAKÜ YAZ OKULU YARDIM DOKÜMANI 1. Yaz Okulu Ön Hazırlık İşlemleri (Yaz Dönemi Oidb tarafından aktifleştirildikten sonra) Son aktif ders kodlarının

Qt ile Programlama. İşbaran Akçayır

Baskı Đstemci ve Sunucuları. Sunucu. Đstemci

ÖĞRENME FAALĠYETĠ GELĠġMĠġ ÖZELLĠKLER

Sürücü Gönder. Yönetici Kılavuzu

Qt Temelleri. Eren BAŞTÜRK.

OPERATÖRLER BÖLÜM Giriş Aritmetik Operatörler

C Operatörler. Öğr. Gör. M. Ozan AKI. Rev 1.0

Genel bilgiler Windows gezgini Kes Kopyala Yapıştır komutları. 4 Bilinen Dosya Uzantıları

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

KWorld PlusTV Hybrid Stick

İşletim Sisteminin Katmanları

BQ360 Modbus Dijital Giriş 24 Kanal. Kullanım Kılavuzu. Doküman Versiyon: BQTEK

13 Kasım İlgili Modül/ler : Satın Alma ve Teklif Yönetimi. İlgili Versiyon/lar : ETA:SQL, ETA:V.8-SQL

ENF TEMEL BİLGİSAYAR BİLİMLERİ Eğitim/Öğretim Yılı Bahar Dönemi DÖNEM SONU LAB. ÖDEV TESLİM DUYURUSU

Digifresh Kullanım Kılavuzu

Com Donatı v5 Kurulum ve Hata Çözümleri İçindekiler

İstemci Yönetimi ve Mobile Printing (Mobil Baskı) Çözümleri

USB KVM Switch. Ses özellikli ve 2 portlu USB KVM switch. Ses özellikli ve 4 portlu USB KVM switch

MICROCHIP USB 2.0 PIC PROGRAMLAYICI

K12NET Eğitim Yönetim Sistemi

Linux Sistemlerde Silinmiş Dosyaları. Forensics)

Anonim Verilerin Lenovo ile Paylaşılması. İçindekiler. Harmony

ETKİLEŞİMLİ TAHTA KORUMA SİSTEMİ KURULUM

Gmail Outlook Ayarları (Türkçe Resimli Anlatım)

KolayOfis Başlangıç Rehberi Kısa Mesaj Yönetimi

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

Yedi Karat Kullanım Klavuzu. Yedi Karat nedir? Neden Karat?

Android Uygulamalarında Güvenlik Testi

TS7200 PLATFORMU ÜZERİNDE SERİ PORT-ETHERNET DÖNÜŞTÜRÜCÜ UYGULAMASI

Facebook connect ile kullanıcı giriş çıkış

Evrak Ekle. Kurum İçi Giden Evrak Ekleme. Kırmızı renker; doldurulması zorunlu alanları ifade etmektedir. İleri Geri tarihli işlem yapılamamaktadır.

Üç-fazlı 480 volt AC güç, normalde-açık "L1", "L2" ve "L3" olarak etiketlenmiş vida bağlantı uçları yoluyla kontaktörün tepesinde kontak hale gelir

Q-BIZ VIEWER KULLANIM KILAVUZU

KAHRAMANMARAŞ SÜTÇÜ İMAM ÜNİVERSİTESİ BİLİMSEL DERGİLER YÖNERGESİ BİRİNCİ BÖLÜM Amaç, Kapsam, Dayanak ve Tanımlar

Karma C/C + + Kodlama

İçinde x, y, z gibi değişkenler geçen önermelere açık önerme denir.

Yandaki resimlerde Excel Pazartesi den başlayarak günleri otomatik olarak doldurmuştur.

Öncelikle basın toplantımıza hoş geldiniz diyor, sizleri sevgiyle ve saygıyla selamlıyorum.

ELITE A.G. KS100/HEFM SICAK-SOĞUK ETĐKET BOY KESME VE ĐŞARETLEME MAKĐNASI KULLANIM KILAVUZU

Braille Star 40 Başvuru Kitapçığı Sürüm 4.0 Lütfen bu başvuru kitapçığıyla birlikte paketinizde bulunan kullanıcı kılavuzunu da gözden geçirin.

PATOLOJİ DERNEKLERİ FEDERASYONU ETİK YÖNERGE TASLAĞI. GEREKÇE: TTB UDEK kararı gereğince, Federasyon Yönetim

DEĞERLENDİRME NOTU: Mehmet Buğra AHLATCI Mevlana Kalkınma Ajansı, Araştırma Etüt ve Planlama Birimi Uzmanı, Sosyolog

YATIRIM FONU ALIM SATIM İŞLEMLERİ KULLANICI KILAVUZU

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR SİSTEMLERİ LABORATUARI YÜZEY DOLDURMA TEKNİKLERİ

Hızlı Başlangıç Rehberi. Türkçe VTE-1016

Sketch Up. - Bilgisayar Dersleri 1. 3 Boyutlu Çizimler ve Google

DOKÜMAN YÖNETİM SİSTEMİ KULLANIMI GELEN EVRAK

PROGRAMLAMA TEMELLER. C Program Yap s

Topoloji değişik ağ teknolojilerinin yapısını ve çalışma şekillerini anlamada başlangıç noktasıdır.

BULUġ BĠLDĠRĠM FORMU/ GIDA

BİT ini Kullanarak Bilgiye Ulaşma ve Biçimlendirme (web tarayıcıları, eklentiler, arama motorları, ansiklopediler, çevrimiçi kütüphaneler ve sanal

Öncelikle Markamıza göstermiş olduğunuz ilgiden dolayı teşekkür ederiz.

İşaret Aygıtları ve Klavye

Firmadaki Mevcut Öğrenme Faaliyetleri 2.2. Aşama

SİRKÜLER İstanbul, Sayı: 2016/01. Konu: E-DEFTER GÖRÜNTÜLEYİCİ PROGRAMI İLE SÖZ KONUSU PROGRAMA İLİŞKİN KULLANIM KILAVUZU YAYINLANMIŞTIR

WEB SAP (ORION) STAJ BAŞVURU KULLANICI DÖKÜMANTASYONU. Süheyla GÜVEN

SHAKE TABLE KULLANIM KILAVUZU

OFİS 365 ÖĞRENCİ MAİL SİSTEMİ KULLANIM KLAVUZU. Office 365

Bellek Analizi ile Zararlı Yazılım Analizi

AĞ ÜZERİNDEN YAZICI ve TARAYICI TANIMLAMA KLAVUZU

Koru1000. Koru1000. beklentilerinizin ötesinde!

Hazine Müsteşarlığıdan (Sigortacılık Genel Müdürlüğü): 29/05/2014

İSTANBUL TEKNİK ÜNİVERSİTESİ MİMARLIK FAKÜLTESİ, MİMARLIK BÖLÜMÜ YARI ZAMANLI ÖĞRETİM ÜYELERİ BİLGİ KİTAPÇIĞI

1. YAPISAL KIRILMA TESTLERİ

Bilgisayar Uygulamaları PSİ105

EPKAS (ELEKTRONİK PROJE KONTROL ARŞİVLEME SİSTEMİ) WEB KULLANIM KILAVUZU

Digitus un alışılmış kutu tasarımı Powerline Wireless 300N Access Point in kutusu için de geçerli. Ürünün ön kısmında yeşil ve beyaz renkler

BÖLÜM 9. Sayıcılar, S7 200 CPU serilerinde C ile gösterilir. Sayıcılar, S7 200 CPU serilerinde: Yukarı sayıcı (Counter up CTU ),

DERLEYİCİ TASARIMI ÖDEV-2 RAPORU

Modem ve Yerel Ağ Kullanım Kılavuzu

BÜRO YÖNETİMİ VE SEKRETERLİK ALANI HIZLI KLAVYE KULLANIMI (F KLAVYE) MODÜLER PROGRAMI (YETERLİĞE DAYALI)

DENEY 2: PROTOBOARD TANITIMI VE DEVRE KURMA

1. Yapılan ayarları kontrol etmek 2. Hataların doğru anlaşıldığından emin olmak 3. Donanıma uygun işletim sistemini belirlemek İŞLEM ANALİZ FORMU

Temel Giriş/Çıkış Fonksiyonları (Devam) Örnek :

M i m e d ö ğ r e n c i p r o j e l e r i y a r ı ş m a s ı soru ve cevapları

İşaret Aygıtları ve Klavye Kullanıcı Kılavuzu

VSG 1200_v2 Kurulum ve Kullanım Kılavuzu

AMASYA ÜNİVERSİTESİ ETİK KURUL YÖNERGESİ. BİRİNCİ BÖLÜM Amaç, Kapsam, Dayanak ve Tanımlar

Uzaktan Kumanda (Yalnızca Belirli Modellerde)

B05.11 Faaliyet Alanı

Danışma Kurulu Tüzüğü

MY16 Bulut PBX Benimseme Teklifi Hüküm ve Koşulları

5510 sayılı SGK kanunu hakkında duyurular

YETİŞKİNLER DİN EĞİTİMİ Akdeniz Müftülüğü

ÖĞRENME FAALĠYETĠ 6 ÖĞRENME FAALĠYETĠ NESNE ĠġLEMLERĠ

DÖNER SERMAYE MALİ YÖNETİM SİSTEMİ

HT-02 HP KABLOLU ODA TERMOSTATI KULLANMA KILAVUZU

MikroÖdeme Servis Dökümanı

Farklı Televizyon Yayın Ortamlarında Aynı Anda Farklı Reklam Yayını Bir Koltuğa İki Karpuz Sığar mı?

RTX6_LRN Kod öğrenmeli Uzaktan kumanda

Transkript:

Qt ye Giriş Can Kavaklıoğlu 10 Temmuz 2007 1 Önsöz Bu yazı Can Kavaklıoğlu[1] tarafından, Cerberus[2] takımının ihtiyaçları doğrultusunda yazılmıştır. Doğu Kaya ya elzem yardımlarından için teşekkürler. Yazıdaki hataları, önerileri, soruları ve/veya yazının oluşturduğu tepkileri eposta@cankavaklioglu.name.tr adresine yollarsanız pek de güzel olur. Herzamanki gibi bu yazıda yazanlar etkisinde kalarak yaptığınız hareketlerden yazar sorumlu değildir. sürüm 1.1 - Temmuz 2006 2 Gereksinimler Trolltech in Qt 4.0 alt yapısını kullanarak programlama yapmak için gerekli kütüphaneleri yüklemek için: 1. Debian sisteminde qt4-dev-tools paketini yüklemeniz yeterli olacaktır. 2. Diğer birkaç sistemin paketi de mevcuttur[13]. 3. Herhangi bir Linux sisteminde indireceğiniz.tar.gz dosyası ile kurulumu gerçekleştirebilirsiniz. 4. Diğer sistemler için kurlum ve diğer konularda detaylı anlatım için [10]. 3 Hello World Programla ilgili her konuda olduğu gibi ilk önce ekrana Hello World yazdıran program ile işe başlayalım: Bu kodu gcc helloworld.cpp komutu ile çalıştırdığınızda şöyle bir hata kümesi ile karşılaşıyorsanız: helloworld.cpp:1:28: QApplication: No such file or directory helloworld.cpp:2:27: QPushButton: No such file or directory gcc programı kütüphanelerinizi bulamıyor demektir. Daha doğrusu qmake kullanarak, düzgün bir Makefile oluştumanız gerekiyor demektir. qmake in de doğru sürümünü kullandığımıza dikkat etmemiz gereklidir. Bunu anlamanın en iyi yolu aşağıdaki komutların çıktısındaki ilk satırlara bakarak, hangi Qt sürümü kullanıldığını yazan satıra göz atmaktır. Benim sistemimde bu komut şöyle çalışıyor: 1

/**************************************************************** ** ** Qt tutorial 1 ** ****************************************************************/ #include <QApplication> #include <QPushButton> int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton hello("hello world!"); hello.resize(100, 30); } hello.show(); return app.exec(); Şekil 1: Örnek: Hello World[11] qmake -project -nopwd helloworld.cpp Komutu bir adet klasöradı.pro dosyası oluşturuyor. Bu dosyanın içerisinde qmake in Makefile ını oluşturacağı projeyi temsil ediyor. Eğer bulunduğumuz klasördeki bütün.cpp ler projeye katılsın istiyorsak, o zaman son iki parametreyi vermeden de komutumuzu çağırabiliriz: qmake -project qmake.pro dosyamızı oluşturduktan sonra gerekli Makefile ı oluşturması için komutunu çağırıyoruz ve Makefile ımız oluştuyor. Burada dikkat edilecek nokta (en azından benim sistemimde öyle idi) qmake komutu Qt 3.0 sürümünün qmake ini kullanıyordu. Bu da yanlış Makefile oluşmasına sebep oluyordu. O yüzden oluşan Makefile ın ilk satırlarını kontrol ederek orada Qt 4... ifadesinin geçtiğine emin olmak gereklidir. Benim sistemimde bunu yapabilmek için qmake yerin şu komutu kullanmam gerekti: qmake-qt4 make Düzgün bir Makefile oluştu ise, Makefile ın bulunduğu klasörde, komutu ile ilk Qt programımızı oluşturduk demektir. Çalıştırmak için komut satırından./<klasöradı> komutu ile programı çalıştırabiliriz. 2

4 Sinyaller ve Yuvalar (Signals and Slots) Qt nin objeler arası iletişim için kullandığı yapılar Sinyaller ve Yuvalar[8] olarak adlandırılırlar. Throlltech in dediğine göre eski sistemlerde kullanılan birbirine pointer gönderip, callback yaptırmak, hem type-safe olmadığı, hem de strongly coupled olduğu için sakıncalı oluyormuş. Bu yüzden bu yeni sistemlerini oluşturmuşlar. Binevi Sony nin OPEN-R sistemindeki gibi Subject(Signal) ve Observer(Slot) lar mevcut. Bir sinyal iki yuvaya bağlanabiliyor. Yukariki iki probleme verilen cevap ise şöyle: 1. Bağlantılar tek elden bir fonksiyon imzası (function signature) ile belirtildiği için tip çakışma problemleri yaşanmıyor. Hatta bu açık ayırım sayesinde derleyici bize olası hataları gösterebiliyor. 2. Loosely coupled yapı sayesinde, sinyali yayan objeler, yuva sahibi objelerle kurdukları bağlantılarda direk ilişki kurmadıkları için, strongly coupled sistemlerdeki sinyal yayan objelerin, bütün yuva sahibi objelerden haber olma zorunluluğu yoktur. Sinyal ve yuvaların birkaç özellikleri: 1. Sinyaller ve yuvalar, bağlantılarından haberdar değillerdir. 2. Bir yuvaya gerektiği kadar sayıda sinyal bağlanabilir. 3. Bir sinyale gerektiği sayıda yuvaya bağlanabilir. 4. Sinyaller sinyallere de bağlanabilir, bu durum, birinci sinyal oluştuğunda, ikinci sinyali tetikleyecektir. 5. Bir sinyal oluştuğunda, kodun çalışması sinyali oluşturan satırın altına, ancak sinyalin yuvasından geri dönüş olduğunda devam eder. Eğer bu durum yerine, yuvadaki işlemin ayrı bir süreç olarak devam etmesi isteniyorsa, sıralı bağlantı (queued connections) yöntemi kullanılır. 6. Yuvaların erişim hakları, hangi sinyallerin bu yuvaya bağlanabileceğini belirtir. 4.1 Sinyal ve Yuvalar Örneği 5 Meta-Obje Sistemi Qt nin Meta-Obje Sistemi[15], başta sinyal ve yuvalar sistemi olmak üzere birkaç işlev sunar: 1. QObject::metaObject() ilgili sınıfın meta objesini verir. 2. QMetaObject::className() RTTI desteğine gerek duymadan çalışan sınıfın adını obje çalışırken verir. 3. QObject::inherits() istenen sınıfın ilgili sınıf tarafından kullanılıp (inherit) kullanılmadığını belirtir. 4. QObject::tr() ve QObject::trUtf8() karakter dizilerini istenen dile çevirir. 5. QObject::setProperty() ve QObject::property() dinamik olarak obje özelliklerinin değiştirir ve verir. Meta-Obje Sistemi aynı zamanda dynamic cast() işlemi için de kullanılabilir. 3

#include <QObject> class Counter : public QObject { Q_OBJECT public: Counter() { m_value = 0; } int value() const { return m_value; } public slots: void setvalue(int value); signals: void valuechanged(int newvalue); private: int m_value; }; 6 Özellikler Sistemi Şekil 2: Örnek: Sinyaller ve yuvalar[8] Qt nin Özellikler Sistemi (Property System [14] ) bir sınıfın içerisindeki standart veri yapılarına denk gelir. Ancak aşağıda belirtilen birkaç önemli işlev sağlar: 1. Okuma fonksiyonu her zaman mevcuttur. 2. İstenirse yazma fonksiyonu her zaman mevcut olabilir. 3. Kayıtlı ( stored ) özniteliği, özelliğin kaydedilip edilmediğini belirtir. 4. Ender olsa da yeniden başlatma ( reset ) fonkiyonu. 5. Tasarlanabilir ( designable ) özniteliği, ilgili özelliğin, Qt Designer gibi bir tasarlama programında gösterilip, gösterilmeyeceğini belirtir. Q PROPERTY() makrosu kullanılarak tanımlanır. Bu makro ancak QObject i kullanan (inherit) sınıflarda kullanılabilir. 6.1 Özellik Okumak ve Yazmak QPushButton *button = new QPushButton; QObject *object = button; // button and object point to the same object button->setdown(true); object->setproperty("down", true); Şekil 3: Örnek: Özellik okuma yazma örneği[14] button->setdown(true) 4

yöntemi derleyicinin, derleme sırasında hataları raporlayabilmesini sağlar. button->setpropety("down",true); yöntemi ise derleme sırasında kullanılabilir olmayan özellikleri programın çalışması sırasında erişebilmemizi sağlar. Özellikler Sisteminin diğer belirtilen diğer iki fonksiyonu ise şunlar: 1. QMetaObject::propertyCount() bir objenin kullanılabilecek bütün özelliklerini verir. 2. QMetaObject::property() istenen objenin istenen özelliğini bir QMetaProperty objesi olarak verir. 6.2 Özellikler Sistemi Örneği class MyClass : public QObject { Q_OBJECT Q_PROPERTY(Priority priority READ priority WRITE setpriority) Q_ENUMS(Priority) public: MyClass(QObject *parent = 0); ~MyClass(); }; enum Priority { High, Low, VeryHigh, VeryLow }; void setpriority(priority priority); Priority priority() const; Şekil 4: Örnek: Özellik okuma yazma örneği[14] Bu tanımlamayı kullanmak için şöyle bir ifade deneyebiliriz: obj->setproperty("priority", "VeryHigh"); Q PROPERTY makrosunun yapısı şu şekildedir: Q_PROPERTY(type name READ getfunction [WRITE setfunction] [RESET resetfunction] [DESIGNABLE bool] [SCRIPTABLE bool] [STORED bool]) 1. name, QVariant[16] tarafından desteklenen bir tip olabilir yada yukarıdaki örnekteki gibi sınıf içerisinde tanımlanan bir tip olabilir. 2. getfunction, const olmalıdır. Döndüğü cevabın tipi da, ya ilgili tipin kendisi, ya o tipte bir pointer yada yine o tipte bir referans olmalıdır. 3. seçmeli setfunction, void dönmelidir ve sadece tek bir değiştirge ( parameter ) almalıdır. Alınan değiştirgenin tipi, ilgili tipin kendisi, ya ilgili tipte bir pointer, yada ilgili tipte bir const reference olmalıdır. 5

4. seçmeli resetfunction, özelliği ilk haline geri çevirecek fonksiyon. Hiçbir değiştirge almamalı ve void dönmelidir. 5. seçmeli DESIGNABLE, GUI tasarım arıcında bu özelliğin kullanımı açıp kapatmak için kullanılır. Öntanımlı değer yazılabilen özellikler için evettir. 6. seçmeli SCRIPTABLE, Betik motoru tarafından kullanıma uygunluğu belirtir. Öntanımlı değer evettir. 7. seçmeli STORED, Objenin durumu kaydedilirken, bu özelliğin değerinin hatırlanıp hatırlanmayacağını belirtir. Öntanımlı değer evettir. Yazılamayan değerler için kullanılması mantıklı değildir. 7 Qt - Eclipse bağlantısı 10 Temmuz da Eclipse ile Qt yi birbirine bağlamak için bir eclipse eklentisi test sürümü yayınlandı[17]. Qt eklentisi yüklemesini yapmadan önce Eclipse te C/C++ desteği için kullanılan CDT eklentisini kurmanız gereklidir. Bu işlemi Eclise in Help > Software Updates > Find and install menüsünden yapabilirsiniz. Eliniz değmişken bir de Eclipse sisteminiz için güncelleme yaparsanız iyi olacaktır. Qt - Eclipse bağlantısı eklentisi test sürümü olduğu için, Eclipse i güncel tutmakta fayda olacaktır. Haberde verilen bağlantıdan[18] indirebileceğiniz paketi, eclipse klasörünüzün üzerine açtığınız zaman Help > Cheat Sheets > Qt Development yoluyla açabileceğiniz bir anlatım mevcut. Bu anlatımda anlatıldığı üzere, Window > Preferences > Qt panelinden, sistemdeki Qt yüklemenizin yerini belirtmeniz gerekiyor. Kullandığım Debian sistemde libqt4* paketleriyle kurduğum Qt kurulumunda, istenen değerleri 4.0 ve /usr olarak girdiğimde Qt yi Eclipse e göstermeyi başardım. Bir not, eğer qt3 sürümü önceden yüklü ise, qmake komutu eski qmake-qt3 komutuna işaret ediyor olabilir. Bu durumda komut satırından çağırdığınız qmake komutunun doğru qmake (qmake-qt4) komutuna işaret ettiğinden emin olun. Eğer Qt yüklemenizi başarıyla belirtebilirseniz, New > Project > Other > Qt ve Qt Designer menüsünden yeni bir Qt projesi başlatabilirsiniz. İşaret edilecek özellikler: 1. Window > Show View menüsünden seçilebilecek bir çok Qt aracı. 2. ui dosyalarını Eclipse in içinden Qt Designer kullanarak düzenleyebilme. Kaynaklar [1] http://cankavaklioglu.name.tr/ [2] Cerberus http://robot.cmpe.boun.edu.tr/aibo/home.php3 [3] The Independant Qt Tutorial - http://www.digitalfanatics.org/projects/qt tutorial/ [4] Qt 4.0: Qt Tutorial - http://doc.trolltech.com/4.0/tutorial.html [5] Qt 4.0: How to Learn Qt - http://doc.trolltech.com/4.0/how-to-learn-qt.html [6] Qt 4.2 Whitepaper - http://dist.trolltech.com/pdf/qt42-whitepaper-a4.pdf [7] Qt 4.0: Qt Object Model - http://doc.trolltech.com/4.0/object.html [8] Qt 4.0: Qt Signals and Slots - http://doc.trolltech.com/4.0/signalsandslots.html [9] Qt 4.0: Examples - http://doc.trolltech.com/4.0/examples.html 6

[10] Qt 4.0: Installation - http://doc.trolltech.com/4.0/installation.html [11] Qt 4.0: Qt Tutorial 1 - http://doc.trolltech.com/4.0/tutorial-t1.html [12] Qt 3.1: qmake User Guide - http://doc.trolltech.com/3.1/qmake-manual.html [13] Downloads Trolltech - http://trolltech.com/developer/downloads [14] Qt 4.0: Qt s Property System - http://doc.trolltech.com/4.0/properties.html [15] Qt 4.0: Meta-Object System - http://doc.trolltech.com/4.0/metaobjects.html [16] Qt 4.0: QVariant Class Reference http://doc.trolltech.com/4.0/qvariant.html [17] Trolltech Provides Qt Developers Access to Eclipse with Integration Release Canadidate http://trolltech.com/company/newsroom/announcements/press.2007-07-10.3777186202 [18] http://trolltech.com/download?target=ftp://ftp.trolltech.com/qteclipse/qt4eclipse-0.0.7- linux.x86.tar.gz 7