Eğitim

Qt ile C++ GUI Programlamaya Giriş

Şimdi ilk olarak çok basit bir program yapmakla başlayabiliriz. Bu programı çalıştırdığımızda sayfada “Merhaba QT” yazan bir pencere açılacaktır. Önce onu satır satır inceleyeceğiz ve sonra nasıl derleyip çalıştıracağımızı öğreneceğiz. Dilerseniz ilk programımızı yapmaya başlayalım. Programı yapmaya başlamadan önce bilgisayara QT programı yüklü olması gerektiğini anlatmam gerekiyor fakat ilk program olduğu için konunun biraz mantığını anlamanız için bu örnekten sonra indirme linklerini ve kurulum işlemleri için gerekli dosyaları altta bulabilirsiniz.

#include <QApplication>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QLabel *label = new QLabel("Hello Qt!");
label->show();
return app.exec();}

Satır 1 ve 2 QApplication ve QLabel sınıflarının tanımlarını programa dahil eder. Her QT sınıfı için, o sınıfın tanımını içeren ve onunla aynı isimde olan bir başlık dosyası vardır.

Satır 5 uygulama kaynaklarını yönetmek için bir QApplication nesnesi oluşturur. QApplication’ un kurucusu argc ve argv argümanlarını ister, çünkü QT kendine ait birkaç komut-satırı argümanını (command-line argument) destekler.

Satır 6 “Merhaba QT!” u görüntüleyen bir QLabel parçacığı(widget) oluşturur. QT ve Unix terminolojisinde, bir parçacık kullanıcı arayüzünde görsel bir öğedir. Bu terimin kaynağı “window gadget”tir ve bu terim Windows terminolojisindeki “control” ve “container” ile aynı anlamdadır. Butonlar(button), menüler(menu), kaydırma çubukları(scroll bar) ve çerçeveler(frame) parçacığa birer örnektirler. Parçacıklar başka parçacıklar içerebilirler; örneğin, bir uygulama penceresi genellikle bir QMenuBar, birkaç QToolBar, bir QStatusBar, ve bazı diğer parçacıkları içeren bir parçacıktır. Çoğu uygulama, uygulama penceresi olarak bir QMainWindow veya bir QDialog kullanır, fakat Qt oldukça esnektir, böylece herhangi bir parçacık pencere olarak kullanılabilir. Örneğimizde, QLabel parçacığı uygulama penceremizdir.

Satır 7 etiketi(label) görünür yapar. Parçacıklar her zaman gizlenmiş olarak oluşturulurlar, böylece onları göstermeden önce isteğimize göre uyarlayabiliriz.

Satır 8’de uygulamanın kontrolü QT’ a geçer. Bu noktada, program olay döngüsüne(event loop) girer. Bu, programın bir kullanıcı eylemi için beklediği (fare tıkladığında veya bir tuşa basmak gibi) bir tür QT 5.7 ile C++ GUI Programlama 10 bekleme(stand-by) modudur. Kullanıcı eylemleri, programın cevaplayabildiği olayları(“mesajlar” diye de geçer) üretir ve bunlar genellikle bir ya da daha fazla fonksiyonun yürütülmesidir. Örneğin, kullanıcı bir parçacığı tıkladığında, bir “fare butonuna basılma(mouse press)” ve bir “fare serbest(mouse release)” olayları üretilir. Bu açıdan GUI uygulamaları, genellikle girdi işleyen, sonuçlar üreten ve bir insan müdahalesi olmadan sonlandırılan geleneksel toplu iş programlarından(batch programs) büyük ölçüde farklıdırlar.

Sadelik olsun diye, main() fonksiyonunun sonunda QLabel nesnesi için delete’i çağırmadık. Bu bellek sızıntısı(memory leak) bunun gibi küçük bir program söz konusu olduğunda zararsızdır. Program sonlandırıldığında QLabel nesnesi için ayrılmış olan bellek işletim sistemi tarafından geri alınacaktır.

Artık programı kendi makinenizde deneyebilirsiniz. Şekil 1.1’deki gibi görünmelidir. Ondan önce, eğer makinenizde Qt yüklü değilse, Qt 4.3.2 veya daha yeni bir sürümünü bilgisayarınıza yüklemelisiniz. (İşletim sisteminize uygun bir Qt 5.7 kopyasını QT-project.org adresinden temin edebilirsiniz.) Bundan sonrası için, QT 5.7’ nin bir kopyasını doğru olarak makinenize yüklediğinizi varsayacağım. Ayrıca program kodlarının içinde olduğu hello.cpp adlı dosyanın hello adlı bir dizinin altında olması gerekir.

qt-sekil-1.1

Bir komut isteminden (command prompt) dizini hello‘ ya ayarlayın ve platformdan bağımsız proje dosyasını (hello.pro) oluşturmak için aşağıdakini yazın:

qmake -project

Proje dosyasından, platforma özgü bir makefile oluşturmak için aşağıdakini yazın:

qmake hello.pro

Şimdi, programı derlemek için make, ardından da programı çalıştırmak için hello yazın. Bir sonraki örneğimize geçmeden önce biraz eğlenelim: Şu satırı

QLabel *label = new QLabel("Merhaba Qt!");

şu kod parçası ile değiştirelim

QLabel *label = new QLabel("<h2><i>Hello </i> "
"<font color=red>Qt!</font></h2>");

ve yine aynı adımları izleyerek programı derleyip çalıştıralım. Uygulamamız çalıştığında Şekil 1.2’ deki gibi görünecektir. Bu örneğin de gösterdiği gibi, bir QT uygulamasının kullanıcı arayüzüne daha hoş bir hava katmak, basit HTML etiketleri(tag) kullanarak bile mümkün.

ve yine aynı adımları izleyerek programı derleyip çalıştıralım. Uygulamamız çalıştığında Şekil 1.2’deki gibi görünecektir. Bu örneğin de gösterdiği gibi, bir QT uygulamasının kullanıcı arayüzüne daha hoş bir hava katmak, basit HTML etiketleri (tag) kullanarak bile mümkün.

Qt ile C++ GUI Programlamaya Giriş

Bir önceki yazımız olan QT Programlamaya Giriş başlıklı makalemizde Programla, QT ve qt c++ eğitim hakkında bilgiler verilmektedir.

Yazar hakkında

Abdulkadir Turan

Abdulkadir Turan

Karadeniz Teknik Üniversitesi İstatistik ve Bilgisayar Bilimleri bölümünde okuyorum. Amacım teknoloji dünyasına ufakta olsa bir katkı sağlamak. Bloğumda her konudan yazı bulabilirsiniz. Aklıma takılan merak ettiğim ne varsa sizinle paylaşmaya çalışıyorum.

Bir Cevap Yaz