Thread overview
C++ / Qt Firebase Üçüncü Parti Bileşeninin Kullanımı
Apr 05, 2016
İbrahim
Apr 06, 2016
erdem
April 05, 2016

Selamün Aleyküm;
Ben Qt kütüphanesi kullanılarak C++ ile yazılmış şu bileşeni Firebase (https://www.firebase.com/) için kullanmak istiyorum: https://github.com/clkasd/qt-firebaseapi/. Lakin bu bileşenin dökümanını açıkcası anlamadım. firebase->getValue() diyerek değer çekmiş ama bu üye işlev void dönüş tipine sahip, yani nasıl veriyi çekiyor? Yani dönüş tipi QString, string vs. olmalı değil miydi? void dönüş tipi olunca nasıl tutacağım veriyi? Mesela şöyle bir json var Firebase'de:

{
 "id-0": {
   "title": "AAA",
   "name": "name_a",
   "content": "XXXXXXXXXX"
 }

 "id-1": {
   "title": "BBB",
   "name": "name_b",
   "content": "YYYYYYYYYY"
 }
}

Buradan id-1 olanın tüm değerlerini çek demek için ne yapmam gerekiyor bu bileşende? Sonra şöyle bir bölüm var:

connect(firebase,SIGNAL(eventResponseReady(QString)),this,SLOT(onResponseReady(QString)));

Burada bunu yapmanın amacı nedir? Ben REST API'yi okudum biraz ve cURL ile javascript kullanarak yazmışlar (https://www.firebase.com/docs/rest/quickstart.html), ben orada bunu karşılayan bir şey göremedim. Bunun kullanım mantığı nedir? Kısaca bu bileşen Firebase ile veri alışverişini nasıl yapıyor? Anlatabilir misiniz? Teşekkürler!

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 05, 2016

Firebase ve Qt bilmeden yazıyorum.

getValue() 'manager->get(request);' yapıyor:

https://github.com/clkasd/qt-firebaseapi/blob/master/firebase.cpp#L112

manager'ın türü QNetworkAccessManager imiş:

https://github.com/clkasd/qt-firebaseapi/blob/master/firebase.h#L39

QNetworkAccessManager asynchronous olarak işliyormuş. Yani, yanıtını hemen vermiyormuş; biz daha sonra QNetworkReply yoluyla sorguluyormuşuz.

Salt İngilizcesine bakarak 'replyFinished(QNetworkReply*)' ifadesini "QNetworkReply sonuçlandığında" olarak uyduruyorum. O da herhalde şu işlevdir:

https://github.com/clkasd/qt-firebaseapi/blob/master/firebase.h#L32

Özetle, yanıtlar daha sonradan replyFinished() çağrılarak bildiriliyor.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 06, 2016

Örnek olarak QT'de sinyal ve slot diye bir kavram var.

   connect(cikisDugmesi_, SIGNAL(clicked()), this, SLOT(cikis()));

Örneğin burada tıklandığında, tıklama sinyali alındığında cikis() işlevini çağır diyor. Bu cikis işlevinde ne olacağını biz yazıyoruz.

https://github.com/clkasd/qt-firebaseapi/blob/master/actionhandler.cpp

Buradaki örnekte de

   connect(firebase,SIGNAL(eventDataChanged(DataSnapshot*)),this,SLOT(onDataChanged(DataSnapshot*)));

veri değiştiğinde onDataChanged isimli işlevi çağır diyor.

Demek istediğim Qt olayları kendisi takip ediyor. Örneğin fare tıklandı bu olay gerçekleştiğinde ne yapmasını istediğimiz SLOT ekinden sonra gelen işlevle biz kodluyoruz.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]