{"id":1863,"date":"2020-05-29T20:08:18","date_gmt":"2020-05-29T20:08:18","guid":{"rendered":"https:\/\/www.yazilimperver.com\/?p=1863"},"modified":"2020-05-29T20:08:18","modified_gmt":"2020-05-29T20:08:18","slug":"haftalik-c-29-qml-c-pluginleri","status":"publish","type":"post","link":"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/29\/haftalik-c-29-qml-c-pluginleri\/","title":{"rendered":"Haftal\u0131k C++ 29 \u2013 QML\/C++ Plugin&#8217;leri"},"content":{"rendered":"<p>Evet dostlar, Godot ile ilgili yaz\u0131y\u0131 bitirdikten sonra hemen QT&#8217;ye h\u0131zl\u0131 bir d\u00f6n\u00fc\u015f yap\u0131yoruz. Hat\u0131rlarsan\u0131z daha \u00f6nce QT&#8217;de soketlerin kullan\u0131m\u0131n\u0131 g\u00f6steren uygulamalar geli\u015ftirmi\u015ftik. A\u015fa\u011f\u0131daki yaz\u0131larda ve Git adresinde bu yaz\u0131lar\/kodlar\u0131 bulabilrsiniz.<\/p>\n<ul>\n<li><span style=\"color: #339966;\"><strong><a style=\"color: #339966;\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2019\/08\/23\/qt-tcp-istemci-uygulamasi-bcom-serisi-3\/\">QT TCP \u0130stemci Uygulamas\u0131 (B\u00c7OM Serisi \u2013 3)<\/a><\/strong><\/span><\/li>\n<li><span style=\"color: #339966;\"><strong><a style=\"color: #339966;\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2019\/09\/29\/qt-tcp-sunucu-uygulamasi-bcom-serisi-4\/\">QT TCP Sunucu Uygulamas\u0131 (B\u00c7OM Serisi &#8211; 4)<\/a><\/strong><\/span><\/li>\n<li><span style=\"color: #339966;\"><strong><a style=\"color: #339966;\" href=\"https:\/\/github.com\/yazilimperver\/SimpleMultiplayerGameEngine\">https:\/\/github.com\/yazilimperver\/SimpleMultiplayerGameEngine<\/a><\/strong><\/span><\/li>\n<\/ul>\n<p>Daha sonras\u0131nda ise QT ve QML kullan\u0131m\u0131na bakm\u0131\u015f ve son olarak da, QML ve C++ uygulamalar\u0131m\u0131z\u0131 nas\u0131l birlikte kullanabilece\u011fimize g\u00f6z atm\u0131\u015ft\u0131k.<\/p>\n<ul>\n<li><span style=\"color: #339966;\"><strong><a style=\"color: #339966;\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2020\/02\/24\/qmlcplusplusintegration\/\">Haftal\u0131k C++ 25 \u2013 QML\/C++ Entegrasyonu<\/a><\/strong><\/span><\/li>\n<\/ul>\n<p>Ben bu konular \u00fczerinde biraz daha \u00e7al\u0131\u015ft\u0131m (aferin bana \ud83d\ude42 ) ve \u00f6ncelikle a\u011f k\u00fct\u00fcphanesini bir elden ge\u00e7irdim. Asl\u0131nda bu k\u00fct\u00fcphaneyi, SocketBox uygulamas\u0131nda (<strong><span style=\"color: #339966;\"><a style=\"color: #339966;\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2020\/01\/02\/2020-yili-ve-socketbox-uygulamasi\/\">SocketBox Uygulamas\u0131<\/a><\/span><\/strong>) tecr\u00fcbe etti\u011fim bir tak\u0131m hususlar \u0131\u015f\u0131\u011f\u0131nda g\u00fcncelledim. A\u015fa\u011f\u0131daki adreste bulunan SocketLibrary, bu anlamda g\u00fcncellenmi\u015f olan kodlar\u0131 ve kabiliyetleri i\u00e7ermekte. Ve tabi ki, bu yaz\u0131mda anlatacaklar\u0131m\u0131. \u015eunu ifade etmek isterim genel yakla\u015f\u0131m veya mimaride bir de\u011fi\u015fiklik olmad\u0131.<\/p>\n<p><span style=\"color: #339966;\"><strong><a style=\"color: #339966;\" href=\"https:\/\/github.com\/yazilimperver\/SocketLibrary\">https:\/\/github.com\/yazilimperver\/SocketLibrary<\/a><\/strong><\/span><\/p>\n<p>\u015eimdi diyeceksiniz ki, peki sevgili yaz\u0131l\u0131mperver, bu yaz\u0131da ne anlat\u0131caks\u0131n? \u0130ki kalemde \u00f6zetliyorum:<\/p>\n<ul>\n<li>C++ kullanan QML bile\u015fenlerini nedir, nas\u0131l olu\u015fturabiliriz,<\/li>\n<li>Bunlar\u0131 olu\u015ftururken nelere dikkat etmeliyiz.<\/li>\n<\/ul>\n<p>Daha \u00f6nce bir ka\u00e7 QML uygulamas\u0131na bakm\u0131\u015ft\u0131k ve \u00f6zellikle C++ ile nas\u0131l kullan\u0131labilece\u011fine bakm\u0131\u015ft\u0131k. A\u00e7\u0131k\u00e7as\u0131 bir s\u00fcre sonra, peki bu QML ve C++ kabiliyetlerini bir k\u00fct\u00fcphane haline nas\u0131l getirebiliriz sorusu akl\u0131m\u0131 kurcalar hale geld. C++ ile geli\u015ftirilen QT i\u00e7in bu olduk\u00e7a standart ve kolay. Hem Visual Studio hem de QT Creator ile bu k\u00fct\u00fcphaneler olu\u015fturulabiliyor. Fakat, C++ ile QML dosyalar\u0131n\u0131 ayn\u0131 \u015fekile nas\u0131l paketleyece\u011fiz? Tabi ki, ilk ba\u015fvuru noktas\u0131 QT dok\u00fcmantasyonu oldu. Her ne kadar bu dok\u00fcmantasyon genel fikri g\u00fczel bir \u015fekilde anlatsa da, a\u00e7\u0131k\u00e7as\u0131, baz\u0131 noktalar\u0131n net bir \u015fekilde ifade edilmedi\u011fini ya da g\u00f6sterilmedi\u011fi hissettim. Ben de hem kendim hem de siz yaz\u0131l\u0131mperver dostlar\u0131m i\u00e7in bu yaz\u0131y\u0131 haz\u0131rlamaya karar verdim. Bu arada, genel yakla\u015f\u0131m i\u00e7in yine de, <span style=\"color: #339966;\"><strong><a style=\"color: #339966;\" href=\"https:\/\/doc.qt.io\/qt-5\/qtqml-modules-cppplugins.html\">https:\/\/doc.qt.io\/qt-5\/qtqml-modules-cppplugins.html<\/a><\/strong><\/span> sayfas\u0131 olduk\u00e7a faydal\u0131, buralara g\u00f6z atman\u0131z iyi olacakt\u0131r.<\/p>\n<p>Asl\u0131na bakarsan\u0131z, QML dosyalar\u0131n\u0131 direk kopyalayarak ya da QRC dosyalar\u0131 i\u00e7erisinde kullanabilirsiniz. Bu yaz\u0131da, bunlar\u0131 direk kullan\u0131c\u0131ya sunmadan (benim i\u00e7in \u015fu an \u00f6ncelikli olan bu kodlar\u0131n ba\u015fkas\u0131 taraf\u0131ndan g\u00f6r\u00fclmesinden ziyade, derli toplu olmas\u0131), bir k\u00fct\u00fcphane \u015feklinde nas\u0131l sunup kullanabilece\u011fimize bakaca\u011f\u0131z. Bu arada QML jargonunda bu dosyalara <strong>mod\u00fcl<\/strong> denilmekte ama plugin demeyi tercih ediyorum.<\/p>\n<p>Burada dikkat edilmesi gerek bir ka\u00e7 ad\u0131m var. Bunlara dikkat etti\u011finiz m\u00fcddet\u00e7e, \u00e7ok kolay bir \u015fekilde bu k\u00fct\u00fcphaneleri olu\u015fturabilirsiniz. Bu arada, ben bu ad\u0131mlar\u0131 QT Creator kullanarak yapt\u0131m. A\u00e7\u0131k\u00e7as\u0131 VS ile nas\u0131l yap\u0131l\u0131r konusunda bir bilgim yok ama QT Creator \u00e7\u0131kt\u0131lar\u0131n\u0131 VS de de bir \u015fekilde kullanabilece\u011finize inan\u0131yorum.<\/p>\n<ul>\n<li>\u00d6ncelikle QT Creator i\u00e7erisinden, <strong>Qt Quick 2 Extension Plugin<\/strong> projesi olu\u015fturuyorsunuz. Bu proje size \u015fablon ve \u00f6rnek te\u015fkil edecek s\u0131n\u0131flar\u0131 olu\u015fturuyor.<\/li>\n<li>Deneme ismi ile olu\u015fturdu\u011funuz bir plugin i\u00e7in <em>deneme_plugin.h<\/em> dosyas\u0131na gitti\u011finizde ilgili s\u0131n\u0131f\u0131n <em>QQmlExtensionPlugin<\/em> s\u0131n\u0131f\u0131ndan t\u00fcretildi\u011fini g\u00f6receksiniz. QML i\u00e7erisinde, C++ s\u0131n\u0131flar\u0131n\u0131 bu k\u00fct\u00fcphane arac\u0131l\u0131\u011f\u0131 ile kullanabilmek i\u00e7in bu s\u0131n\u0131ftan t\u00fcretmeniz gerekiyor. (bu arada C++ kullanarak Quick Item s\u0131n\u0131f\u0131n\u0131 \u00f6zelle\u015ftirebilirsiniz diye ek bir s\u0131n\u0131f da olu\u015fturuluyor ama bu yaz\u0131 i\u00e7in pek anlam\u0131 olmad\u0131\u011f\u0131ndan ben kullanmad\u0131m).<\/li>\n<li>Bu s\u0131n\u0131f\u0131n i\u00e7erisindeki <em>registerTypes<\/em> fonksiyonu i\u00e7erisinde ise, daha \u00f6nce <strong><span style=\"color: #339966;\"><a style=\"color: #339966;\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2020\/02\/24\/qmlcplusplusintegration\/\">QML\/C++ yaz\u0131s\u0131nda<\/a><\/span><\/strong> da bahsetti\u011fim gibi ilgili s\u0131n\u0131f\u0131n QML i\u00e7erisinde kullan\u0131bilmesi i\u00e7in kaydediyorsunuz.<\/li>\n<li>Gelelim en \u00f6nemli noktalardan birisine, o da, <em><strong>qmldir<\/strong> <\/em>dosyas\u0131. Bu dosya, olu\u015fturaca\u011f\u0131n\u0131z QML plugin&#8217;ine ili\u015fkin bilgileri adresleyen bir dosya ve i\u00e7eri\u011fi de a\u015fa\u011f\u0131daki gibi oluyor.\n<ul>\n<li>\n<pre class=\"lang:plsql decode:true\">module com.yazilimperver.socketlibrary\r\nGlowingLabel 1.0 qrc:\/\/\/commonControls\/GlowingLabel.qml\r\nplugin QmlSocketLibrary<\/pre>\n<\/li>\n<li>\u0130lk sat\u0131r, qml i\u00e7erisinde import ile bu mod\u00fcl\u00fc nas\u0131l ifade edece\u011fimiz tan\u0131ml\u0131yoruz. Her bir <em>qmldir <\/em>dosyas\u0131nda sadece bir adet tan\u0131mlay\u0131c\u0131 olur. Uygulama i\u00e7erisinde buna tekrar bak\u0131ca\u011f\u0131z.<\/li>\n<li>\u0130kinci sat\u0131r, bu mod\u00fcl i\u00e7erisinde, C++ s\u0131n\u0131f\u0131m\u0131z ile birlikte sunmay\u0131 planlad\u0131\u011f\u0131m\u0131z bir QML tipini ifade ediyor. Bu sat\u0131rda, qml tipimiz, versiyonu ve bulundu\u011fu kaynak dizinini ifade etmekte.<\/li>\n<li>\u00dc\u00e7\u00fcnc\u00fc k\u0131s\u0131m ise, sunulan plugin&#8217;in ismini ifade ediyor. Burada birden fazla plugin tan\u0131mlamas\u0131 yapabilirsiniz.<\/li>\n<li>Bu dosya i\u00e7erisinde, ayn\u0131 tipin farkl\u0131 s\u00fcr\u00fcmlerini farkl\u0131 dosyalardan \u00e7ekebilirsiniz (\u00f6r. &#8220;GlowingLabel 2.0 qrc:\/\/\/commonControls\/GlowingLabelNew.qml&#8221; gibi). Bu ve bir\u00e7ok \u015feyin nas\u0131l yap\u0131ld\u0131\u011f\u0131n\u0131 g\u00f6rmek i\u00e7in <strong><span style=\"color: #339966;\"><a style=\"color: #339966;\" href=\"https:\/\/doc.qt.io\/qt-5\/qtqml-modules-qmldir.html\">https:\/\/doc.qt.io\/qt-5\/qtqml-modules-qmldir.html<\/a><\/span><\/strong> adresine g\u00f6z atabilirsiniz.<\/li>\n<li>Son, fakat bir o kadar da \u00f6nemli nokta ise plugin ile birlikte yukar\u0131da olu\u015fturdu\u011fumuz <strong><em>qmldir<\/em><\/strong> dosyas\u0131n\u0131 da ta\u015f\u0131man\u0131z gerekiyor. Bunun i\u00e7in ben .pro dosyas\u0131n\u0131n i\u00e7erisinde a\u015fa\u011f\u0131daki olu\u015fturma beti\u011fini kullan\u0131yorum:<\/li>\n<li>\n<pre class=\"lang:plsql decode:true \">QMAKE_POST_LINK += $$QMAKE_COPY $$replace($$list($$quote($$PWD\/qmldir) $$DESTDIR), \/, $$QMAKE_DIR_SEP)<\/pre>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Yukar\u0131daki ad\u0131mlar sonras\u0131nda art\u0131k elimizde bir <em>plugin dll dosyas\u0131<\/em> ve <em>qmldir<\/em> dosyam\u0131z var. \u015eimdi bunu uygulamalar i\u00e7erisinde nas\u0131l kullanaca\u011f\u0131z, ona bir bakal\u0131m. O da \u00e7ok kolay.<\/p>\n<ul>\n<li>main.cpp i\u00e7erisine a\u015fa\u011f\u0131daki gibi bir sat\u0131r ekliyorsunuz. Bu dizin plugin dll dosyas\u0131 ve qml dir dosyalar\u0131n\u0131 i\u00e7eriyor olmal\u0131.\n<ul>\n<li>engine.addImportPath(QUrl(QLatin1String(&#8220;.\/..\/plugins\/&#8221;)).toString());<\/li>\n<\/ul>\n<\/li>\n<li>Daha sonra, qml dosyalar\u0131n\u0131zda, bu mod\u00fcldeki tipleri kullanabilmek i\u00e7in de, a\u015fa\u011f\u0131daki sat\u0131r\u0131 eklemeniz gerekiyor. B\u00fct\u00fcn yapman\u0131z gereken bu kadar.\n<ul>\n<li>import com.yazilimperver.socketlibrary 1.0<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Bu k\u00fct\u00fcphaneleri android&#8217;e nas\u0131l port ederim derseniz, a\u015fa\u011f\u0131da da bunun ile ilgili sorulmu\u015f bir soru var size yard\u0131m olaca\u011f\u0131n\u0131 d\u00fc\u015f\u00fcn\u00fcyorum:<\/p>\n<ul>\n<li><a href=\"https:\/\/stackoverflow.com\/questions\/18309061\/how-to-deploy-qt5-qml-plugin-to-android\"><span style=\"color: #339966;\"><strong>https:\/\/stackoverflow.com\/questions\/18309061\/how-to-deploy-qt5-qml-plugin-to-android<\/strong><\/span><\/a><\/li>\n<\/ul>\n<p>Yaz\u0131y\u0131 \u00f6zellikle \u00e7ok uzatmak istemedim ki, biraz koda da g\u00f6z at\u0131n, proje (.pro) dosyalar\u0131n\u0131 da incelemenizde fayda var. D\u00fczenlenmi\u015f soket k\u00fct\u00fcphanesini SocketLibrary, QML k\u00fct\u00fcphanesini QmlSocketLibrary ve sonra olarak bu k\u00fct\u00fcphaneyi kullanan test uygulamas\u0131n\u0131 da\u00a0 QmlSocketLibTest olarak isimlendirdim. A\u00e7\u0131k olmayan bir nokta olursa, ya da merak etti\u011finiz, l\u00fctfen yorumlar k\u0131sm\u0131na ekleyiniz. Umar\u0131m sizlere faydal\u0131 olur.<\/p>\n<p>Ben yaz\u0131l\u0131mperver, bir sonraki yaz\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere, sa\u011fl\u0131kl\u0131 g\u00fcnler diliyorum hepinize&#8230;<\/p>","protected":false},"excerpt":{"rendered":"<p>Evet dostlar, Godot ile ilgili yaz\u0131y\u0131 bitirdikten sonra hemen QT&#8217;ye h\u0131zl\u0131 bir d\u00f6n\u00fc\u015f yap\u0131yoruz. Hat\u0131rlarsan\u0131z daha \u00f6nce QT&#8217;de soketlerin kullan\u0131m\u0131n\u0131 g\u00f6steren uygulamalar geli\u015ftirmi\u015ftik. A\u015fa\u011f\u0131daki yaz\u0131larda ve Git adresinde bu yaz\u0131lar\/kodlar\u0131 bulabilrsiniz. QT TCP \u0130stemci Uygulamas\u0131 (B\u00c7OM Serisi \u2013 3) QT TCP Sunucu Uygulamas\u0131 (B\u00c7OM Serisi &#8211; 4) https:\/\/github.com\/yazilimperver\/SimpleMultiplayerGameEngine Daha sonras\u0131nda ise QT ve QML kullan\u0131m\u0131na&#8230; <a class=\"more-link\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/29\/haftalik-c-29-qml-c-pluginleri\/\">Continue reading <span class=\"meta-nav\">&#8594;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":1308,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[10,41,685],"tags":[13,177,747,742,510,743,471,746,744,745,543],"class_list":["post-1863","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c","category-modern-c","category-qt","tag-c","tag-library","tag-module","tag-plugin","tag-qml","tag-qmldir","tag-qt","tag-qt-quick","tag-socket","tag-socket-library","tag-socket-programming"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Haftal\u0131k C++ 29 \u2013 QML\/C++ Plugin&#039;leri - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/29\/haftalik-c-29-qml-c-pluginleri\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[:tr]Haftal\u0131k C++ 29 \u2013 QML\/C++ Plugin&#039;leri[:] - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"og:description\" content=\"Evet dostlar, Godot ile ilgili yaz\u0131y\u0131 bitirdikten sonra hemen QT&#8217;ye h\u0131zl\u0131 bir d\u00f6n\u00fc\u015f yap\u0131yoruz. Hat\u0131rlarsan\u0131z daha \u00f6nce QT&#8217;de soketlerin kullan\u0131m\u0131n\u0131 g\u00f6steren uygulamalar geli\u015ftirmi\u015ftik. A\u015fa\u011f\u0131daki yaz\u0131larda ve Git adresinde bu yaz\u0131lar\/kodlar\u0131 bulabilrsiniz. QT TCP \u0130stemci Uygulamas\u0131 (B\u00c7OM Serisi \u2013 3) QT TCP Sunucu Uygulamas\u0131 (B\u00c7OM Serisi &#8211; 4) https:\/\/github.com\/yazilimperver\/SimpleMultiplayerGameEngine Daha sonras\u0131nda ise QT ve QML kullan\u0131m\u0131na... Continue reading &#8594;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/29\/haftalik-c-29-qml-c-pluginleri\/\" \/>\n<meta property=\"og:site_name\" content=\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-29T20:08:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/07\/Qt-e1580417103404.png\" \/>\n\t<meta property=\"og:image:width\" content=\"30\" \/>\n\t<meta property=\"og:image:height\" content=\"23\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"yaz\u0131l\u0131mperver\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"yaz\u0131l\u0131mperver\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/29\/haftalik-c-29-qml-c-pluginleri\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/29\/haftalik-c-29-qml-c-pluginleri\/\"},\"author\":{\"name\":\"yaz\u0131l\u0131mperver\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"headline\":\"Haftal\u0131k C++ 29 \u2013 QML\/C++ Plugin&#8217;leri\",\"datePublished\":\"2020-05-29T20:08:18+00:00\",\"dateModified\":\"2020-05-29T20:08:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/29\/haftalik-c-29-qml-c-pluginleri\/\"},\"wordCount\":1143,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"keywords\":[\"c++\",\"library\",\"module\",\"plugin\",\"qml\",\"qmldir\",\"Qt\",\"Qt Quick\",\"socket\",\"socket library\",\"socket programming\"],\"articleSection\":[\"C++\",\"Modern C++\",\"QT\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/29\/haftalik-c-29-qml-c-pluginleri\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/29\/haftalik-c-29-qml-c-pluginleri\/\",\"url\":\"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/29\/haftalik-c-29-qml-c-pluginleri\/\",\"name\":\"[:tr]Haftal\u0131k C++ 29 \u2013 QML\/C++ Plugin'leri[:] - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#website\"},\"datePublished\":\"2020-05-29T20:08:18+00:00\",\"dateModified\":\"2020-05-29T20:08:18+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/29\/haftalik-c-29-qml-c-pluginleri\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/29\/haftalik-c-29-qml-c-pluginleri\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/29\/haftalik-c-29-qml-c-pluginleri\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Ana sayfa\",\"item\":\"https:\/\/www.yazilimperver.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Haftal\u0131k C++ 29 \u2013 QML\/C++ Plugin&#8217;leri\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.yazilimperver.com\/#website\",\"url\":\"https:\/\/www.yazilimperver.com\/\",\"name\":\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"description\":\"Payla\u015fmak g\u00fczeldir.\",\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.yazilimperver.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\",\"name\":\"yaz\u0131l\u0131mperver\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png\",\"contentUrl\":\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png\",\"caption\":\"yaz\u0131l\u0131mperver\"},\"logo\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[:tr]Haftal\u0131k C++ 29 \u2013 QML\/C++ Plugin'leri[:] - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/29\/haftalik-c-29-qml-c-pluginleri\/","og_locale":"tr_TR","og_type":"article","og_title":"[:tr]Haftal\u0131k C++ 29 \u2013 QML\/C++ Plugin'leri[:] - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","og_description":"Evet dostlar, Godot ile ilgili yaz\u0131y\u0131 bitirdikten sonra hemen QT&#8217;ye h\u0131zl\u0131 bir d\u00f6n\u00fc\u015f yap\u0131yoruz. Hat\u0131rlarsan\u0131z daha \u00f6nce QT&#8217;de soketlerin kullan\u0131m\u0131n\u0131 g\u00f6steren uygulamalar geli\u015ftirmi\u015ftik. A\u015fa\u011f\u0131daki yaz\u0131larda ve Git adresinde bu yaz\u0131lar\/kodlar\u0131 bulabilrsiniz. QT TCP \u0130stemci Uygulamas\u0131 (B\u00c7OM Serisi \u2013 3) QT TCP Sunucu Uygulamas\u0131 (B\u00c7OM Serisi &#8211; 4) https:\/\/github.com\/yazilimperver\/SimpleMultiplayerGameEngine Daha sonras\u0131nda ise QT ve QML kullan\u0131m\u0131na... Continue reading &#8594;","og_url":"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/29\/haftalik-c-29-qml-c-pluginleri\/","og_site_name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","article_published_time":"2020-05-29T20:08:18+00:00","og_image":[{"width":30,"height":23,"url":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/07\/Qt-e1580417103404.png","type":"image\/png"}],"author":"yaz\u0131l\u0131mperver","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"yaz\u0131l\u0131mperver","Tahmini okuma s\u00fcresi":"6 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/29\/haftalik-c-29-qml-c-pluginleri\/#article","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/29\/haftalik-c-29-qml-c-pluginleri\/"},"author":{"name":"yaz\u0131l\u0131mperver","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"headline":"Haftal\u0131k C++ 29 \u2013 QML\/C++ Plugin&#8217;leri","datePublished":"2020-05-29T20:08:18+00:00","dateModified":"2020-05-29T20:08:18+00:00","mainEntityOfPage":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/29\/haftalik-c-29-qml-c-pluginleri\/"},"wordCount":1143,"commentCount":0,"publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"keywords":["c++","library","module","plugin","qml","qmldir","Qt","Qt Quick","socket","socket library","socket programming"],"articleSection":["C++","Modern C++","QT"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/29\/haftalik-c-29-qml-c-pluginleri\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/29\/haftalik-c-29-qml-c-pluginleri\/","url":"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/29\/haftalik-c-29-qml-c-pluginleri\/","name":"[:tr]Haftal\u0131k C++ 29 \u2013 QML\/C++ Plugin'leri[:] - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/#website"},"datePublished":"2020-05-29T20:08:18+00:00","dateModified":"2020-05-29T20:08:18+00:00","breadcrumb":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/29\/haftalik-c-29-qml-c-pluginleri\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/29\/haftalik-c-29-qml-c-pluginleri\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/29\/haftalik-c-29-qml-c-pluginleri\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Ana sayfa","item":"https:\/\/www.yazilimperver.com\/"},{"@type":"ListItem","position":2,"name":"Haftal\u0131k C++ 29 \u2013 QML\/C++ Plugin&#8217;leri"}]},{"@type":"WebSite","@id":"https:\/\/www.yazilimperver.com\/#website","url":"https:\/\/www.yazilimperver.com\/","name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","description":"Payla\u015fmak g\u00fczeldir.","publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.yazilimperver.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb","name":"yaz\u0131l\u0131mperver","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/","url":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png","contentUrl":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png","caption":"yaz\u0131l\u0131mperver"},"logo":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/1863","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/comments?post=1863"}],"version-history":[{"count":5,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/1863\/revisions"}],"predecessor-version":[{"id":1873,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/1863\/revisions\/1873"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/media\/1308"}],"wp:attachment":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/media?parent=1863"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/categories?post=1863"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/tags?post=1863"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}