Category:GlobalTanimlamalar

From Qt Wiki
Revision as of 14:35, 14 January 2015 by Maintenance script (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Türkçe

<QtGlobal> Global Tanımlamalar

Bu döküman temel C bilginiz var olduğu düşünelerek hazırlanmıştır. Orijinal ingilizce versiyona bağlı kalınmaya çalışılmış, konuların değinildiği yerlerin bir olması hedeflenmiştir.

Global tanımlar <QtGlobal> header dosyasında bulunmaktadır. Global tanım listesine bu dökümanın ingilizce versiyonundan ulaşabilirsiniz.

Tipler (Types)

Qt tiplerinin amacı tüm platformlarda karşılığı olan tiplerle çalışmayı sağlamaktır.

Bu header dosyasında tanımlanan tipler daha çok tüm platformlarda ortak kullanılabilecek şekilde ortak bit boyutlarında değişkenleri içermektedir. Buna bir örnek verecek olursak qint8 ile 8 bit signed char garantiye alınmış olur. Bu değişken tüm platformlarda C tipinde karşılığı olan bir değişkenle Qt tarafından eşleşebilir.

Bunun dışında önemli bir husus olan QtMsgType ile bir çoğu platformda Qt tarafından mesaj handlerlerine mesajlar ulaştırılarak uyumluluk sağlanmaktadır.

Fonksiyonlar (Functions)

<QtGlobal> başlık dosyası çeşitli fonksiyonlar taşımaktadır. Bu fonksiyonlar daha çok template amaçlıdır, yani bir çoğu platformda aynı işi gören C fonksiyonlarına kalıp olurlar. Bunlardan göze çarpan, qAbs() fonksiyonu mutlak değer döndürmektedir. qMin() ve qMax() fonksiyonları ise iki değerden en düşüğünü ve en yükseğini döndürmektedir.

Örnek:

<QtGlobal> içerisinde dört önemli fonksiyon bulunmaktadır. Bu fonksiyonlar string mesajlar üretmektedir, qCritical(), qDebug(), qFatal() ve qWarning() dir.

Örnek:

Örnekte görüldüğü gibi varsayım bir veritabanına bağlantı kurulduğunda hata olma ihtimali sonucu bir uyarı mesajı üretmiş olduk.

Makrolar (Macros)

<QtGlobal> dosyası içerisinde ki makrolardan Q_CC_ ile başlayanlar özel bir platformda compile edilmek için kullanılır. Örneğin Q_CC_SUN makrosu ile tanımlama sonucu Sun Studio C++ ile compile edilebilir. Ancak makro Q_OS_ ile başlıyor ise tanımlama belirtilen platform içindir. Örneğin Q_OS_WIN32 ile Windows sistemleri için tanımlama yapılabilir. Makrolar sayesinde derlemeye veya platforma özel kodlar geliştirilebilir.

Bunun dışında çeşitli bilgiler de verilmek için bazı makrolar bulunmaktadır. Buna bir örnek olarak QT_VERSION_STR ile Qt versiyonu string olarak alınabilmektedir.

Tip Dökümantasyonu

typedef QtMsgHandler

Bu tanımlama ile handler fonksiyonuna bir pointer oluşturulur. Bu fonksiyona parametre olarak QtMsgType ve char tipli mesaj gönderilir.

enum QtMsgType

Bu enum sayesinde mesaj handlerine gönderilen mesajın tipi belirlenir. Bu sayede mesajın üretildiği kaynakta bilinmiş olur. Constant tablosu dökümanın ingilizce versiyonunda detaylıca verilmiştir. Bunlar, QtDebugMsg, QtWarningMsg, QtCriticalMsg, QtFatalMsg, QtSystemMsg dir.

typedef qint8

Bu tanımlama signed char içindir. Bu sayede 8-bit lik data tüm platformlarda Qt tarafından desteklenmiş olur.

typedef qint16

Bu tanımlama signed short içindir. Bu sayede 16-bit lik data tüm platformlarda Qt tarafından desteklenmiş olur.

typedef qint32

Bu tanımlama signed int içindir. Bu sayede 32-bit lik data tüm platformlarda Qt tarafından desteklenmiş olur.

typedef qint64

Bu tanımlama long long int (__int64 on Windows). Bu sayede 64-bit lik data tüm platformlarda Qt tarafından desteklenmiş olur. Ancak bunun için Q_INT64_C() makrosu kullanılmalıdır.

typedef qlonglogn

Bu qint64 ile aynı yapıya sahiptir.

typedef qptrdiff

Bu değişken tipi pointer farklılıkları için kullanılmaktadır. Bu sayede herhangi bir boyutta ki pointer tüm platformlarda desteklenebilmektedir. Burada qptrdiff signed dir, signed olmayan değerler için quintptr kullanmanız gerekir.

typedef qreal

Bu değişken tipi double içindir. Ancak ARM işlemcilerde bu değişken float olarak karşılık alır. Bunun sebebi performans kazanmak içindir.

typedef quint8

Bu değişken unsigned char içindir.

typedef quint16

Bu değişken unsigned short içindir.

typedef quint32

Bu değişken unsigned int içindir.

typedef quint64

Bu değişken unsigned long long int (unsigned __int64 Windows’da) içindir. Bu değişkeni kullanmak için Q_UINT64_C() makrosu kullanılmalıdır.

typedef quintptr

Bu değişken unsigned pointer farklılığı içindir. Bu sayede herhangi bir boyuttaki unsigned pointerlar Qt tarafından farklı platformlarda desteklenmektedir.

typedef qulonglong

Bu değişken quintptr ile aynıdır.

typedef uchar

unsigned char için en kolay uyuşumlu tiptir.

typedef uint

unsigned int için en kolay uyuşumlu tiptir.

typedef ulong

unsigned long için en kolay uyuşumlu tiptir.

typedef ushort

unsigned short için en kolay uyuşumlu tiptir.

Fonkisyon Dökümantasyonu

T qAbs(const T & value)

qAbs fonksiyonu T tipi ile verilen değeri 0 dan uzaklaştırarak mutlak değerini alır.

Örnek:

const T & qBound( const T & min, const T & value, const T & max )

Bir değeri en düşük ve en yüksek sınırlarda ki bir aralıkta tutacak şekilde zorlar. Bu qMax(min, qMin(value, max)) ile aynıdır.

Örnek:

void qCritical ( const char * msg, … )

Mesaj handlerini critical mesajla çağırır. Eğer mesaj handleri tanımlanmamışsa stderr hatayı yazdırır. Windows altında mesaj debuggere gönderilir. Bu fonksiyon C printf() fonksiyonundaki gibi string argümanlarını kabul etmektedir.

Örnek:

void qDebug ( const char * msg, … )

Mesaj handlerini debug mesajla çağırır. Eğer mesaj handleri tanımlanmamışsa stderr hatayı yazdırır. Windows altında console uygulaması geliştirildiğinde mesaj debuggere gönderilir. Eğer QT_NO_DEBUG_OUTPUT tanımlaması yapılmış ise mesaj esgeçilir. Bu fonksiyon C printf() fonksiyonundaki gibi string argümanlarını kabul etmektedir.

void qFatal ( const char * msg, … )

Mesaj handlerini fatal mesajla çağırır. Eğer mesaj handleri tanımlanmamışsa stderr hatayı yazdırır. Windows altında mesaj debuggere gönderilir.

bool qFuzzyCompare ( double p1, double p2 ) [static]

Floating point p1 ve p2 değerlerini eşitliğini kontrol ederek eşit olma durumunda true yanlış olma durumunda false döndürmektedir. Burada dikkat edilmesi gereken bir bug bulunduğu bildirilmiştir. Bu kontrol eğer 0.0 değerleri üzerinde yapılacak ise çalışmayacaktır. Bunun için yapılablecek bir çözüm olarak compare edilecek her iki değere 1 eklenerek sorun giderilmiş olur.

bool qFuzzyCompare ( float p1, float p2 ) [static]

qFuzzyCompare nin double parametrelisi ile aynıdır.

QtMsgHandler qInstallMsgHandler ( QtMsgHandler handler )

Daha onceden tanimlanmis olan bir mesaj handleri install ederek pointerini geri dondurur. Mesaj handleri qFatal, qDebug gibi mesajlari yakalayarak mesaj ciktilarinnin olusturulmasini saglar. Eger QT_NO_WARNING_OUTPUT ve/veya QT_NO_DEBUG_OUTPUT tanimlanmamissa bu mesajlar in ciktilarini almak mumkun olur

Mesaj handleri mesajlari X11 altinda standart outputtan verirken Windows altinda ise debugtan vermektedir. Fatal mesajlarinin onemli bir hususuda uygulamayi durdurmasidir.

int qMacVersion()

Bunun yerine QSysInfo::MacintoshVersion kullanmanız tavsiye edilir.

const T & qMax ( const T & value1, const T & value2 )

value1 ve value2 değerlerinden en büyüğünü getirir.

Örnek:

const T & qMin ( const T & value1, const T & value2 )

qMax dakinin aksine en küçük değeri döndürür. Bir önceki örnekte uygulandığında enBuyukKim değişkeni seninVeri ye eşit olacaktır.

qint64 qRound64 ( qreal value )

64-bit integer olacak şekilde sayıyı yuvarlayıp döndürür.

Örnek:

int qRound ( qreal value )

Integer tipinde bir sayıyı yuvarlayıp döndürür. Bir önceki örnekteki gibi davranış sergiler.

const char * qVersion ()

Çalışma esnasında qt nin versiyonunu öğrenmek isterseniz bu fonksiyonla String tipinde versiyonu alabilirsiniz (Örneğin, “4.1.0”). Ayrıca QT_VERSION_STR makrosuna da bakınız.

void qWarning ( const char * msg, … )

Mesaj handlerini msg bilgisiyle çağırır. Eğer mesaj handleri oluşturulmamışsa hata çıktısını stderr’a yönlendirir. Windows altında çalışıyorsanız mesajı debugger’e gönderecektir. Eğer bu fonksiyon QT_NO_WARNING_OUTPUT ile karşılaşmamışsa, QT_FATAL_WARNING tanımlaması yapacaktır. QT_NO_WARNING_OUTPUT tanımlaması sayesinde Warning tipi hataları es geçebildiğimizi unutmayın.

Bu fonksiyon string formatını ve liste argüman yapısını C de ki printf() fonksiyonunda olduğu gibi kullanabilmektedir.

Örnek:

Eğer program çalışırken süpriz bir çıktıyla karşılaşmak istemiyorsanız tavsiye qInstallMsgHandler() ‘i install etmektir.

T * q_check_ptr ( T * pointer )

Pek fazla açıklama bulamadığım bir husus. Ama anladığım kadarıyla pointerin pointer olup olmadığını denetliyor. Bir pointer verin ve size yine bir pointer döndürsün. Pointer vermezseniz ne olur, zaten onu denetlemek için.

QByteArray qgetenv ( const char * varName )

Environment değişkenlerini okumaya ihtiyaç duyduğunuzda parametrede göndereceğiniz değeri okur. Gelen dğeri QByteArray::constData() fonksiyonuyla char dönüştürebilirsiniz.

bool qputenv ( const char * varName, const QByteArray & value )

Environment değişkenlerinde düzenleme veya ekleme ihtiyacı duyduğunuzda bu fonksiyonu kullanabilirsiniz. Değişkenin adı ve değerini göndererek var ise eski kaydı günceller, yok ise yeni kayıt oluşturur. Eğer geri dönen değer 0 ise değeri ayarlamayı maalesef yapamamış demektir.

int qrand ()

C++ da ki rand() fonksiyonunun Thread-safe versiyonudur.

Geri döndereceği sayıyı 0 ile RAND_MAX (bu max <cstdlib> ve <stdlib.h> dosyalarında tanımlanmıştır) arasında pseudo-random sekansı ile bularak döndürür. Bu sekans bir adım değeri ile üretildiği için eğer adım değerini belirleyerek rastgele sayı üretmek isterseniz qsrand() fonskiyonunu kullanabilirsiniz.

void qsrand ( uint seed )

C++ da ki srand() fonksiyonun Thread-safe versiyonudur. qrand() fonksiyonunu çağırırken, pseudo rastgele sayısını üretecek adım değerini belirtmek için kullanılır. Yani rastgele sayı aralığında ki sekansı değiştirmeye yarar.

qsrand() fonskiyonu ile tanımlanan adım değeri bir thread boyunca hep aynı kalacaktır. Buna dikkat ederek farklı threadlarda sekansın aynı ayarla olmayacağını ve bir thread boyunca sekansın değişmesini istiyorsanız thread bitmeden tekrar ayarlamanız gerekeceğini unutmayın.

void qt_set_sequence_auto_mnemonic ( bool on )

Mac sistemlerde mnemonic değerini aktif etmeye yarar. Mac sistemlerde bu değer varsayılan olarak false dır.

int qt_symbian_exception2Error ( const std::exception & aThrow )

Symbian sistemlerde C++ standart hatalarını symbian hata sisteminde symbian hata koduna dönüştürmeyi sağlar. Bu kod sadece symbian sistemlerde çalışır.

void qt_symbian_exception2LeaveL ( const std::exception & aThrow )

Symbian sistemlerde C++ standart hatalarını symbian hata sisteminde symbian leave haline dönüştürmeyi sağlar. Bu kod sadece symbian sistemlerde çalışır.

void qt_symbian_throwIfError ( int error )

Symbian sistemlerde hata kodu ile hata fırlatılmasını sağlar. Bu kod sadece symbian sistemlerde çalışır.

Makro Dökümantasyonu

QT_REQUIRE_VERSION ( int argc, char ** argv, const char * version )

Qt uygulaması geliştirirken gerekli versiyonu belirtmek için kullanılır. Bu sayede uygulama çalışmadan önce gerekli versiyonun var olup olmadığını kontrol ederek uygulamanın çalışmasını sağlar.

argc ve argv parametreleri qt main fonksiyonuna gönderilen parametreler olmalıdır.

Örnek:

QT_TRYCATCH_ERROR ( error, function )

Bu makro standart C++ hata kodunu yakalayıp Symbian OS hata koduna dönüştürür. Bu durumda error ile kodu ve KErrNone ile hata oluşmadığı bilgilerine ulaşabiliriz. Bu makro sadece Symbian sistemlerde çalışır.

Örnek:

QT_VERSION

Qt nin versiyonunu hex olarak verir. Bu 0xMMNNPP şeklindeki (MM=Major, NN=Minor ve PP=Patch) bilgiyle version bilgisine ulaşılabilinir. Aşağıda ki örnekte qt versiyonuna göre uygulamada derlenirken icon atama yöntemine değinilmiştir.

Örnek:

QT_VERSION_STR

String tipinde (örn: 4.1.0) versiyon bilgisini almamıza yarar.

void Q_ASSERT ( bool test )

Bir işlem sonucunda debug modunda iken bize işlem için test yaparak bilgi gönderir. Bu bilgi kaynak, satır gibi verilerle debug çıktısına basılır.

Örnek:

Örnekte eğer b değeri 0 verilerek çağrılmış ise debug çıktısına aşağıdaki gibi bir bilgi yazılacaktır.

void Q_ASSERT_X ( bool test, const char * where, const char * what )

Q_ASSERT den farklı olarak nerede ve ne bilgileri de mesaj olarak gönderilir.

Örnek:

Eğer işlemde b 0 olarak gönderilmiş ise debug çıktısına aşağıda ki bilgi düşecektir.

Q_CC_BOR

Bu tanımlama ile derlemenin Borland/Turbo C++ ile yapılacağını belirtir.

Q_CC_CDS

Bu tanımlama ile derlemenin Reliend C++ ile yapılacağını belirtir.

Q_CC_COMEAU

Bu tanımlama ile derlemenin Comeau C++ ile yapılacağını belirtir.

Q_CC_DEC

Bu tanımlama ile derlemenin DEC C++ ile yapılacağını belirtir.

Q_CC_EDG

Bu tanımlama ile derlemenin Eddison Design Group C++ ile yapılacağını belirtir.

Q_CC_GHS

Bu tanımlama ile derlemenin Green Hills Optimizing C++ ile yapılacağını belirtir.

Q_CC_GNU

Bu tanımlama ile derlemenin GNU C++ ile yapılacağını belirtir.

Q_CC_INTEL

Bu tanımlama ile derlemenin Intel C++ ile yapılacağını belirtir.

Q_CC_MSVC

Bu tanımlama ile derlemenin Microsoft Visual C/C++ veya Intel C++ for Windows ile yapılacağını belirtir.

void Q_CHECK_PTR ( void * pointer )

Parametrenin pointer olup olmadığını kontrol eder.

Q_DECLARE_TYPEINFO ( Type, Flags )

Özellikle bir tip için ekstra bilgi ataması yapmak istediğinizde kullanabilirsiniz. Type ile belirteceğiniz tipe Flag ile özellik bilgisini eklersiniz. Bu özelikler;

  • Q_PRIMITIVE_TYPE ile kurucusu ve yıkıcısı olmayan tiplere ait flagdır. Genellikle POD (plain old data) diye anılırlar.
  • Q_MOVABLE_TYPE ile kurucusu ve/veya yıkıcısı olan bellekte taşınabilir (memcopy() ile) tiplerin flagıdır.
  • Q_COMPLEX_TYPE (varsayılan) kurucusu ve/veya yıkıcısı olan ancak bellekte taşınamayn tiplerin flagıdır.

Primitif bir tip için örnek:

Movable bir tip için örnek:

qint64 Q_INT64_C ( literal )

Platformdan bağımsız olarak signed int64 oluşturmaya yarar.

Örnek:

foreach ( variable, container )

container üzerinden değer çekerek çalışan standart foreach döngüsüdür.

forever

for (;;) döngüsünde olduğu gibi sonsuz döngü oluşturmaya yarar süslü parantezler içerisini sürekli çalıştırır.

Son

Bu makale ingilizce versiyonunda ki konular alınarak hazırlanmıştır. Bazı konular atlanmış olabilir, bu genellikle aynı yapıdaki sabitler, makrolar ve fonksiyonlarda olabilir. Lütfen eksik konular için ingilizce versiyonuna başvurunuz.

This category currently contains no pages or media.