|
Ders - 3 23.11.2007 - 13:33 Bu derste arayüz dosyası olan .ui dosyasını .h dosyasını çevirip uygulama içinde kullanacağız. "ders3" adında yeni bir klasör oluşturup qt4-designer ile bir Widget hazırlayıp "form.ui" olarak kaydedin ardından, aşağıdaki kodları bir metin editoründe yazıp adını "main.cpp" olarak kaydediyoruz. #include <QApplication> komut satırına geçip Linux için: Windows için: komutlarını veriyoruz. Peki burada ne yaptık? 4. satıra dikkat edilirse #include "ui_form.h" satırı ile oluşturmadığımız bir dosyayı uygulamaya dahil ettik, peki derleyici bundan şikayetci olmazmı? Hayır "form.ui" olan dosyamız derleme esnasında okunur, cpp koduna çevirilip "ui_form.h" olarak kaydedilir, bu dosyadaki sınıfı istersek nesne olarak kullanır, istersek kalıtım yöntemi ile yeni bir sınıf oluşturup kullanabiliriz. Biz bu derste nesne olarak kullanacağız. 12. satırda bunu göstermektedir. .ui dosyasından .h dosyasına otomatik olarak çevrilen her arayüz sınıfının içinde setupUi() adında üye fonksiyon vardır, işte bu fonksiyon ile arayüz oluşturulur. 13. satırda görüleceği gibi bu fonksiyon parametre olarak QWidget* türünde bir form alıyor(çünkü Widget tasarladık, eğer bir dialog tasarlasaydık QDialog* tipinde QDialog penceresi isteyecekti.) bu form'a formu tasarlarken kullandığımız bileşenleri ekliyor, ardında w->show(); ile bu form'u ve setupUi() üye fonksiyonunun oluşturduğu arayüzü görünür hale getiriyoruz.
'Ders - 3' İle İlgili Diğer Yazılar İçin Tıklayın. |
En Son Yorumlar (Makaleler)
En Çok Okunanlar (Makaleler)
Sponsor Bağlantı
|
Devamını merakla bekliyorum.
İyi çalışmalar.
Benim bir sorum olacaktı: Bu koda #include "ui_ornek.h" ile bir Dialog basligi dosyası dahil etseydik, o pencereyi ekrana "f" QDialog u altındaki Ornek butonuna nasıl baglardık?
Ben denedim basarili olamadim. Kullandigim kod su sekilde (ornek i QDialog olarak tanimladiktan sonra):
QObject::connect(f.ornekButton, SIGNAL(clicked()), 0, SLOT( ornek->show() ) );
Buton sinyale hic bir tepki vermiyor...
Evet tepki vermez. Çünkü, 0 (sıfır) yazdığınız yere ilgili nesnenin, SLOT() içerisine de çağıracağınız slot'un ismini yazmanız gerek.
Yani kodu düzeltecek olursak;
QObject::connect(f.ornekButton, SIGNAL(clicked()), ornek, SLOT( show() ) );