You are on page 1of 4

QT Eitimi - 3 : Men

nder Arslan <onder@xcoders.net>


Srm 1.0

zet Bu belge qt renimi iin bir dizi eklinde hazrlanmtr. C++ bilmek n kouldur. Giri Grafik Kullanc Ara Yz (gui) programlarnn nemli elerinden biri de "men" dr. Menler genel kullanmda ara ubuu (toolbar) yada ksa yollar (short cuts) kadar sk kullanlmasada yaz olmas nedeniyle grsel programlarn vazgeilmezidir. zellikle yeni renilmeye balayan programlarn ara ubuklarndaki ikonlar ve ksayollar renilene kadar ounlukla men kullanlr. Yani unu sylemeye alyorum nc dersimizin konusu : Men ;) Men Bu dersimiz de nce ki iki ders gibi bir balk dosyas(.h) ve iki kaynak dosyasndan(.cpp) oluuyor ;) . /*--- form.h ---*/ #ifndef FORM_H #define FORM_H #include <QtGui> class Form : public QMainWindow { Q_OBJECT public: Form(); private slots: void menuItem1_func(); void menuItem2_func(); void altmenuItem_func(); private: QMenu *Menum; QMenu *altMenu; QAction *menuItem1; QAction *menuItem2; QAction *altmenuItem; };

#endif form.h: Include nilemci komutuyla gerekli dosyalar balk dosyamza ekledikten sonra - dikkat edersiniz ki artk buralarda fazla aklama yapmyorum, neyi neden eklemeniz gerektiini bilmiyorsanz nceki derslere bakn ;) - Form isimli snfmz public tretmesi ile QMainWindow snfndan tretiyoruz. QMainWindow uygulamann ana penceresidir. Men ubuu (menu bar), ara ubuu (tool bar), durum ubuu (status bar) vb. kontrolleri salar. Bizim iin nemi meny zerinde oluturacamz ubuu (bar) QMainWindow 'un menuBar() fonksiyonu ile oluturacak olmamz. QMenu snf ile oluturmak istediimiz menlerimizi tantyoruz ben bir men ve bu mennn altmens olmak zere iki tane men (Menum, altMenu) tanmladm. Menmze elemanlar QAction snf trnden ekliyoruz. QAction snf menler , ara ubuu butonlar, ksa yollarla kullanlmak iin soyut bir snf sunuyor. Bu sayade elemanlarnz iin etkilenmi (enabled) , iaretlenmi (checked) vb. gibi zellikleri tek bir arayzle kullanabiliyorsunuz. /*--- form.cpp ---*/ #include "form.h" Form::Form() { menuItem1 = new QAction(QIcon("disk.png"),"&menuItem1", this); menuItem1->setShortcut("Ctrl+A"); connect(menuItem1, SIGNAL(triggered()), this, SLOT(menuItem1_func())); menuItem2 = new QAction("menuItem2", this); menuItem2->setShortcut("Ctrl+B"); connect(menuItem2, SIGNAL(triggered()), this, SLOT(menuItem2_func())); altmenuItem = new QAction("altmenuItem", this); altmenuItem->setShortcut("Ctrl+C"); connect(altmenuItem, SIGNAL(triggered()), this, SLOT(altmenuItem_func())); Menum = menuBar()->addMenu("&Menu"); Menum->addAction(menuItem1); Menum->addAction(menuItem2); Menum->addSeparator(); altMenu = Menum->addMenu("altMenu"); altMenu->addAction(altmenuItem); resize(400, 200); } void Form::menuItem1_func() { QMessageBox::information(this, "menuItem1_func", "menuItem1_func"); } void Form::menuItem2_func()

{ QMessageBox::information(this, "menuItem2_func", "menuItem2_func"); } void Form::altmenuItem_func() { QMessageBox::information(this, "altmenuItem_func", "altmenuItem_func"); } form.cpp Yapc (constructer) fonksiyonumuza QAction nesnelerimizi oluturarak balyoruz. lk oluturulan action 'da menuItem1'e ikon eklediimi farketmisinizdir. Eer program altkdan sonra menuItem1 'in yannda resim grmek istiyorsanz altnz klasrde disk.png isminde bir ikonu ayn klasre koyduunuzdan emin olun ;) Ayrca men ve elemanlarn isimleri tanmlanrken (r: &menuItem1) & iareti yazldna dikkat edin. & iareti bulunduu konumun sandaki harf ile Alt tuuna baslarak bu men yada elamann tklanmas ile alacak fonksiyonun almasn salar . & iareti ile ksa yol oluturmak ayn isimli menlerin ve elemanlarn ok olmas durumunda fazla kullanl deildir. Byle durumlarda ksa yol oluturmak iin QAction snfnn setShortcut fonksiyonu ile yukardaki gibi ksayol atanr. Action 'lar tanmladktan sonra menmz menuBar snfnn addMenu fonksiyonuyla oluturuyoruz. addAction fonksiyonu ile de action 'larmz menye ekliyoruz. Dikkat etmeniz gereken ikinci mennn menubar 'a deil birinci menye eklendiidir.

/*--- main.cpp ---*/ #include <QApplication> #include "form.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); Form form; form.show(); return app.exec(); } main.cpp main.cpp kaynak kod dosyas iinde nceden aklanmayan hibir kod paras yine yok ;) Derleme ve altrma Program altnda mennz aadaki gibi grnr ;)

Son Sz Merak edenler iin syliyeyim menuItem1 'in yanndaki ikonda disket zerinde bir tux var ;)

Telif Hakk ve Lisans Bu belgenin, QT Eitimi - 3 : Men , 1.0 srmnn telif hakk 2006 nder ARSLAN'a aittir. Bu belgeyi, Free Software Foundation tarafndan yaynlanm bulunan GNU zgr Belgeleme Lisansnn 1.1 ya da daha sonraki srmnn koullarna bal kalarak kopyalayabilir, databilir ve/veya deitirebilirsiniz. Bu Lisansn bir kopyasn http://www.gnu.org/copyleft/fdl.html adresinde bulabilirsiniz. Linux, Linus Torvalds adna kaytl bir ticar isimdir. Qt, TrollTech adna kaytl bir ticari isimdir. Feragatname Bu belgedeki bilgilerin kullanmndan doacak sorumluluklar, ve olas zararlardan belge yazar sorumlu tutulamaz. Bu belgedeki bilgileri uygulama sorumluluu uygulayana aittir. Tm telif haklar aksi zellikle belirtilmedii srece sahibine aittir. Belge iinde geen herhangi bir terim bir ticar isim ya da kuruma itibar kazandrma olarak alglanmamaldr. Bir rn ya da markann kullanlm olmas ona onay verildii anlamnda grlmemelidir.

You might also like