Category:GlobalTanimlamalar: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
(Apparently Turkish page ...)
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Category:NasilYapilir]]
'''Türkçe'''
'''Türkçe'''


=<QtGlobal> Global Tanımlamalar=
= <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.''
''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 &lt;QtGlobal&gt; header dosyasında bulunmaktadır. Global tanım listesine bu dökümanın ingilizce versiyonundan ulaşabilirsiniz.
Global tanımlar <QtGlobal> header dosyasında bulunmaktadır. Global tanım listesine bu dökümanın ingilizce versiyonundan ulaşabilirsiniz.


===Tipler (Types)===
=== Tipler (Types) ===
 
<blockquote>
 
Qt tiplerinin amacı tüm platformlarda karşılığı olan tiplerle çalışmayı sağlamaktır.


<blockquote>Qt tiplerinin amacı tüm platformlarda karşılığı olan tiplerle çalışmayı sağlamaktır.
</blockquote>
</blockquote>
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.
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.
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)===
=== Fonksiyonlar (Functions) ===


&lt;QtGlobal&gt; 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.
<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:
Örnek:


&lt;QtGlobal&gt; içerisinde dört önemli fonksiyon bulunmaktadır. Bu fonksiyonlar string mesajlar üretmektedir, qCritical(), qDebug(), qFatal() ve qWarning() dir.
<code>int valueA = 10;
int valueB = 5;
 
int valueMin = qMin(valueA, valueB);
// valueMin == 5</code>
 
<QtGlobal> içerisinde dört önemli fonksiyon bulunmaktadır. Bu fonksiyonlar string mesajlar üretmektedir, qCritical(), qDebug(), qFatal() ve qWarning() dir.


Örnek:
Örnek:
<code>
if (!driver()->isOpen() || dirver()->isOpenError()) {
qWarning("Sql Hatası: Database açılamıyor");
}
</code>


Örnekte görüldüğü gibi varsayım bir veritabanına bağlantı kurulduğunda hata olma ihtimali sonucu bir uyarı mesajı üretmiş olduk.
Ö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)===
=== Makrolar (Macros) ===


&lt;QtGlobal&gt; 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.
<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.
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===
=== Tip Dökümantasyonu ===


=====typedef QtMsgHandler=====
===== typedef QtMsgHandler =====


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


====enum QtMsgType====
<code> void aMsgHandler(QtMsgType, const char '''); <code>


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.
==== enum QtMsgType ====
p. 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====
==== typedef qint8 ====
p. Bu tanımlama signed char içindir. Bu sayede 8-bit lik data tüm platformlarda Qt tarafından desteklenmiş olur.


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


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


Bu tanımlama signed short içindir. Bu sayede 16-bit lik data tüm platformlarda Qt tarafından desteklenmiş olur.
==== typedef qint64 ====
p. 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 qint32====
</code>qint64 data = Q_INT64_C(932838457459459);</code>


Bu tanımlama signed int içindir. Bu sayede 32-bit lik data tüm platformlarda Qt tarafından desteklenmiş olur.
==== typedef qlonglogn ====
p. Bu qint64 ile aynı yapıya sahiptir.


====typedef qint64====
==== typedef qptrdiff ====
p. 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.


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 qreal ====
p. 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 qlonglogn====
==== typedef quint8 ====
p. Bu değişken unsigned char içindir.


Bu qint64 ile aynı yapıya sahiptir.
==== typedef quint16 ====
p. Bu değişken unsigned short içindir.


====typedef qptrdiff====
==== typedef quint32 ====
p. Bu değişken unsigned int içindir.


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 quint64 ====
p. 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 qreal====
==== typedef quintptr ====
p. Bu değişken unsigned pointer farklılığı içindir. Bu sayede herhangi bir boyuttaki unsigned pointerlar Qt tarafından farklı platformlarda desteklenmektedir.


Bu değişken tipi double içindir. Ancak <span class="caps">ARM</span> işlemcilerde bu değişken float olarak karşılık alır. Bunun sebebi performans kazanmak içindir.
==== typedef qulonglong ====
p. Bu değişken quintptr ile aynıdır.


====typedef quint8====
==== typedef uchar ====
p. unsigned char için en kolay uyuşumlu tiptir.


Bu değişken unsigned char içindir.
==== typedef uint ====
p. unsigned int için en kolay uyuşumlu tiptir.


====typedef quint16====
==== typedef ulong ====
p. unsigned long için en kolay uyuşumlu tiptir.


Bu değişken unsigned short içindir.
==== typedef ushort ====
p. unsigned short için en kolay uyuşumlu tiptir.


====typedef quint32====
=== Fonkisyon Dökümantasyonu ===
==== T qAbs(const T & value) ====
p. qAbs fonksiyonu T tipi ile verilen değeri 0 dan uzaklaştırarak mutlak değerini alır.


Bu değişken unsigned int içindir.
p. Örnek:


====typedef quint64====
<code>
int mutlakDeger;
int orijinalDeger = –14;


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.
mutlakDeger = qAbs(orijinalDeger);
// mutlakDeger == 14
</code>


====typedef quintptr====
==== const T & qBound( const T & min, const T & value, const T & max ) ====
p. 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.


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


====typedef qulonglong====
<code>
int xValue = 0;
int minValue = 2;
int maxValue = 8;


Bu değişken quintptr ile aynıdır.
int boundedValue = qBound(minValue, xValue, maxValue);
// boundedValue == 2
</code>


====typedef uchar====
==== 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.
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 &amp; value)====
 
qAbs fonksiyonu T tipi ile verilen değeri 0 dan uzaklaştırarak mutlak değerini alır.
 
Örnek:
 
====const T &amp; qBound( const T &amp; min, const T &amp; value, const T &amp; 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:
Örnek:


====void qCritical ( const char * msg, … )====
<code>
 
void load(const QString &fileName)
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.
{
 
QFile file(fileName);
Örnek:
if (!file.exists())
qCritical("%s dosyası bulunamadı!", qPrintable(fileName));
}
</code>


====void qDebug ( const char * msg, … )====
==== 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.
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, … )====
==== 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.
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]====
==== 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.
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]====
==== bool qFuzzyCompare ( float p1, float p2 ) [static] ====


qFuzzyCompare nin double parametrelisi ile aynıdır.
qFuzzyCompare nin double parametrelisi ile aynıdır.


====QtMsgHandler qInstallMsgHandler ( QtMsgHandler handler )====
==== 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
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
Line 157: Line 174:
Mesaj handleri mesajlari X11 altinda standart outputtan verirken Windows altinda ise debugtan vermektedir. Fatal mesajlarinin onemli bir hususuda uygulamayi durdurmasidir.
Mesaj handleri mesajlari X11 altinda standart outputtan verirken Windows altinda ise debugtan vermektedir. Fatal mesajlarinin onemli bir hususuda uygulamayi durdurmasidir.


====int qMacVersion()====
==== int qMacVersion() ====


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


====const T &amp; qMax ( const T &amp; value1, const T &amp; value2 )====
==== const T & qMax ( const T & value1, const T & value2 ) ====


value1 ve value2 değerlerinden en büyüğünü getirir.
value1 ve value2 değerlerinden en büyüğünü getirir.
Line 167: Line 184:
Örnek:
Örnek:


====const T &amp; qMin ( const T &amp; value1, const T &amp; value2 )====
<code>
int benimVeri = 10;
int seninVeri = 5;
 
int enBuyukKim = qMax(benimVeri, seninVeri);
// enBuyukKim == benimVeri
</code>
 
==== 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.
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 )====
==== qint64 qRound64 ( qreal value ) ====


64-bit integer olacak şekilde sayıyı yuvarlayıp döndürür.
64-bit integer olacak şekilde sayıyı yuvarlayıp döndürür.
Line 177: Line 202:
Örnek:
Örnek:


====int qRound ( qreal value )====
<code>
qreal deger1 = 42949672960.3;
qreal deger2 = 42949672960.7;
 
int roundedDeger1 = qRound(deger1);
// roundedDeger1  42949672960
int roundedDeger2 = qRound(deger2);
// roundedDeger2  42949672961
</code>
 
==== int qRound ( qreal value ) ====


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


====const char * qVersion ()====
==== 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.
Ç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, … )====
==== 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.
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.
Bu fonksiyon string formatını ve liste argüman yapısını C de ki printf() fonksiyonunda olduğu gibi kullanabilmektedir.
Line 193: Line 228:
Örnek:
Örnek:


Eğer program çalışırken süpriz bir çıktıyla karşılaşmak istemiyorsanız tavsiye qInstallMsgHandler() ‘i install etmektir.
<code>
void f(int c)
{
if ( c > 500 )
qWarning("f: bad argument, c == %d", c);
}
</code>


====T * q_check_ptr ( T * pointer )====
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.
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 )====
==== 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.
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 &amp; value )====
==== 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.
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 ()====
==== int qrand () ====


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


Geri döndereceği sayıyı 0 ile <span class="caps">RAND</span>_MAX (bu max &lt;cstdlib&gt; ve &lt;stdlib.h&gt; 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.
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 )====
==== 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.
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.
Line 219: Line 262:
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.
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 )====
==== 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.
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 &amp; aThrow )====
==== 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.
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 &amp; aThrow )====
==== 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.
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 )====
==== 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.
Symbian sistemlerde hata kodu ile hata fırlatılmasını sağlar. Bu kod sadece symbian sistemlerde çalışır.


===Makro Dökümantasyonu===
=== Makro Dökümantasyonu ===


====QT_REQUIRE_VERSION ( int argc, char ** argv, const char * version )====
==== 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.
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.
Line 245: Line 288:
Örnek:
Örnek:


====QT_TRYCATCH_ERROR ( error, function )====
<code>
#include <QApplication>
#include <QMessageBox>


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.
int main(int argc, char '''argv[])
{
QT_REQUIRE_VERSION(argc, argv, "4.0.2")


Örnek:
QApplication app(argc, argv);
return app.exec();
}
</code>
 
==== QT_TRYCATCH_ERROR ( error, function ) ====
p. 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.
 
p. Örnek:
 
<code>
// Burada Symbian TInt tipinde hata kodunu üreterek bize sunar.
// Örnekte server adını translate ederken oluşacak hatayı algılamaya çalışılmıştır.
// Eğer hata olursa geri dönecek değer KErrNone sabitinden farklı olacaktır.
TInt QServerApp::Connect(const QString &serverName)
{
TPtrC name;
TInt err;
QT_TRYCATCH_ERROR(err, name.Set(qt_QString2TPtrC(serverName)));
if (err != KErrNone)
return err;
return iServer.Connect(name);
}
</code>
 
==== QT_VERSION ====
p. 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.


====QT_VERSION====
p. Örnek:


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.
<code>
#if QT_VERSION >= 0x040100
QIcon icon = style()->standardIcon(QStyle::SP_TrashIcon);
#else
QPixmap pixmap = style()->standardPixmap(QStyle::SP_TrashIcon);
QIcon icon(pixmap);
#endif
</code>


Örnek:
==== QT_VERSION_STR ====
p. String tipinde (örn: 4.1.0) versiyon bilgisini almamıza yarar.


====QT_VERSION_STR====
==== void Q_ASSERT ( bool test ) ====
p. 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.


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


====void Q_ASSERT ( bool test )====
<code>
// File: div.cpp


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.
#include <QtGlobal>


Örnek:
int divide(int a, int b)
{
Q_ASSERT(b != 0);
return a / b;
}
</code>


Ö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.
p. Ö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 )====
<code>
ASSERT: "b == 0" in file div.cpp, line 7
</code>


==== 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.
Q_ASSERT den farklı olarak nerede ve ne bilgileri de mesaj olarak gönderilir.


Örnek:
Örnek:
<code>
// File: div.cpp
#include <QtGlobal>
int divide(int a, int b)
{
Q_ASSERT_X(b != 0, "Bölme işlemi", "Sıfıra bölme hatası");
return a / b;
}
</code>


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


====Q_CC_BOR====
<code>
ASSERT failure in Bölme işlemi: "Sıfıra bölme hatası", file div.cpp, line 7
</code>
 
==== Q_CC_BOR ====


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


====Q_CC_CDS====
==== Q_CC_CDS ====


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


====Q_CC_COMEAU====
==== Q_CC_COMEAU ====


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


====Q_CC_DEC====
==== Q_CC_DEC ====


Bu tanımlama ile derlemenin <span class="caps">DEC</span> C++ ile yapılacağını belirtir.
Bu tanımlama ile derlemenin DEC C++ ile yapılacağını belirtir.


====Q_CC_EDG====
==== Q_CC_EDG ====


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


====Q_CC_GHS====
==== Q_CC_GHS ====


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


====Q_CC_GNU====
==== Q_CC_GNU ====


Bu tanımlama ile derlemenin <span class="caps">GNU</span> C++ ile yapılacağını belirtir.
Bu tanımlama ile derlemenin GNU C++ ile yapılacağını belirtir.


====Q_CC_INTEL====
==== Q_CC_INTEL ====


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


====Q_CC_MSVC====
==== Q_CC_MSVC ====


Bu tanımlama ile derlemenin Microsoft Visual C/C++ veya Intel C++ for Windows ile yapılacağını belirtir.
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 )====
==== void Q_CHECK_PTR ( void * pointer ) ====


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


====Q_DECLARE_TYPEINFO ( Type, Flags )====
==== 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;
Ö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 <span class="caps">POD</span> (plain old data) diye anılırlar.
* 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_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.
* 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:
Primitif bir tip için örnek:
<code>
struct Point2D
{
int x;
int y;
};
Q_DECLARE_TYPEINFO(Point2D, Q_PRIMITIVE_TYPE);
</code>


Movable bir tip için örnek:
Movable bir tip için örnek:


====qint64 Q_INT64_C ( literal )====
<code>
class Point2D
{
public:
Point2D() { data = new int[2]; }
Point2D(const Point2D &other) { … }
~Point2D() { delete[] data; }
 
Point2D &operator=(const Point2D &other) { … }
 
int x() const { return data[0]; }
int y() const { return data[1]; }
 
private:
int *data;
};
 
Q_DECLARE_TYPEINFO(Point2D, Q_MOVABLE_TYPE);
</code>
 
==== qint64 Q_INT64_C ( literal ) ====


Platformdan bağımsız olarak signed int64 oluşturmaya yarar.
Platformdan bağımsız olarak signed int64 oluşturmaya yarar.
Line 335: Line 473:
Örnek:
Örnek:


====foreach ( variable, container )====
<code>
qint64 value = Q_INT64_C(932838457459459);
</code>
 
==== foreach ( variable, container ) ====


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


====forever====
==== 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.
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===
=== 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.

Latest revision as of 12:33, 15 September 2016

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:

int valueA = 10;
int valueB = 5;

int valueMin = qMin(valueA, valueB);
// valueMin == 5

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

Örnek:

if (!driver()->isOpen() || dirver()->isOpenError()) {
qWarning("Sql Hatası: Database açılamıyor");
}

Ö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.

 void aMsgHandler(QtMsgType, const char '''); <code>

==== enum QtMsgType ====
p. 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 ====
p. Bu tanımlama signed char içindir. Bu sayede 8-bit lik data tüm platformlarda Qt tarafından desteklenmiş olur.

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

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

==== typedef qint64 ====
p. 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.

qint64 data = Q_INT64_C(932838457459459);

typedef qlonglogn

p. Bu qint64 ile aynı yapıya sahiptir.

typedef qptrdiff

p. 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

p. 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

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

typedef quint16

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

typedef quint32

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

typedef quint64

p. 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

p. 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

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

typedef uchar

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

typedef uint

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

typedef ulong

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

typedef ushort

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

Fonkisyon Dökümantasyonu

T qAbs(const T & value)

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

p. Örnek:

int mutlakDeger;
int orijinalDeger = 14;

mutlakDeger = qAbs(orijinalDeger);
// mutlakDeger == 14

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

p. 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.

p. Örnek:

int xValue = 0;
int minValue = 2;
int maxValue = 8;

int boundedValue = qBound(minValue, xValue, maxValue);
// boundedValue == 2

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 load(const QString &fileName)
{
QFile file(fileName);
if (!file.exists())
 qCritical("%s dosyası bulunamadı!", qPrintable(fileName));
}

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:

int benimVeri = 10;
int seninVeri = 5;

int enBuyukKim = qMax(benimVeri, seninVeri);
// enBuyukKim == benimVeri

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:

qreal deger1 = 42949672960.3;
qreal deger2 = 42949672960.7;

int roundedDeger1 = qRound(deger1);
// roundedDeger1  42949672960
int roundedDeger2 = qRound(deger2);
// roundedDeger2  42949672961

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:

void f(int c)
{
 if ( c > 500 )
 qWarning("f: bad argument, c == %d", c);
}

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:

 #include <QApplication>
 #include <QMessageBox>

int main(int argc, char '''argv[])
 {
 QT_REQUIRE_VERSION(argc, argv, "4.0.2")

 QApplication app(argc, argv);
 
 return app.exec();
 }

QT_TRYCATCH_ERROR ( error, function )

p. 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.

p. Örnek:

 // Burada Symbian TInt tipinde hata kodunu üreterek bize sunar.
 // Örnekte server adını translate ederken oluşacak hatayı algılamaya çalışılmıştır.
 // Eğer hata olursa geri dönecek değer KErrNone sabitinden farklı olacaktır.
 TInt QServerApp::Connect(const QString &serverName)
 {
 TPtrC name;
 TInt err;
 QT_TRYCATCH_ERROR(err, name.Set(qt_QString2TPtrC(serverName)));
 if (err != KErrNone)
 return err;
 return iServer.Connect(name);
 }

QT_VERSION

p. 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.

p. Örnek:

 #if QT_VERSION >= 0x040100
 QIcon icon = style()->standardIcon(QStyle::SP_TrashIcon);
 #else
 QPixmap pixmap = style()->standardPixmap(QStyle::SP_TrashIcon);
 QIcon icon(pixmap);
 #endif

QT_VERSION_STR

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

void Q_ASSERT ( bool test )

p. 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.

p. Örnek:

 // File: div.cpp

 #include <QtGlobal>

 int divide(int a, int b)
 {
 Q_ASSERT(b != 0);
 return a / b;
 }

p. Ö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.

ASSERT: "b == 0" in file div.cpp, line 7

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:

 // File: div.cpp

#include <QtGlobal>

int divide(int a, int b)
 {
 Q_ASSERT_X(b != 0, "Bölme işlemi", "Sıfıra bölme hatası");
 return a / b;
 }

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

ASSERT failure in Bölme işlemi: "Sıfıra bölme hatası", file div.cpp, line 7

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:

struct Point2D
 {
 int x;
 int y;
 };

Q_DECLARE_TYPEINFO(Point2D, Q_PRIMITIVE_TYPE);

Movable bir tip için örnek:

class Point2D
 {
 public:
 Point2D() { data = new int[2]; }
 Point2D(const Point2D &other) {  }
 ~Point2D() { delete[] data; }

Point2D &operator=(const Point2D &other) {  }

int x() const { return data[0]; }
 int y() const { return data[1]; }

private:
 int *data;
 };

Q_DECLARE_TYPEINFO(Point2D, Q_MOVABLE_TYPE);

qint64 Q_INT64_C ( literal )

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

Örnek:

 qint64 value = Q_INT64_C(932838457459459);

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

This category currently contains no pages or media.