Kirish qismi: Qt faqat elementlar haqida emas GUI. Ushbu ramka o'zaro bog'langan tizimdir. Qt ob'ektlarining o'zaro bog'liqligi QObject sinfining merosi orqali erishiladi. Va ular orasidagi aloqa signal-slot tizimi orqali amalga oshiriladi.Ushbu maqolada ushbu kutubxonaning asosiy sinflari va foydali xususiyatlari tasvirlangan. QObject Bu barcha Qt ob'ektlar uchun asosiy sinf. U signallar va slotlardan foydalanadigan har qanday sinf tomonidan meros qilib olinadi. U ob'ektlarni bir-biri bilan bog'lash imkoniyatini beradi. Buning uchun foydali funksiyalarni ham taqdim etadi. Bu bilan tanishtiramiz...
Qt: Qt-dagi birinchi dastur dasturchi g'oyalarini hayotga tatbiq etishning ko'plab usullariga ega bo'lgan kuchli asboblar to'plamidir. Keling, uni birinchi dasturdan o'zlashtirishni boshlaylik.Demak, qo'lingizda kompilyatorga ulangan QtCreator ishlab chiqish muhiti mavjud (masalan, MinGW). Ishlab chiqish muhitida Boshqa loyiha -> Subkataloglar bilan loyihani tanlang. Nomi: cppstudio. Bu erda qulaylik uchun biz saytdan olingan barcha ilovalarni saqlaymiz. Keling, bu yerda dars_1 nomi bilan QWidget loyihasini yaratamiz va mainwindows.h, mainwindows.cpp, ... fayllarini oʻchirib tashlaymiz.
Qt - bepul, keng qo'llaniladigan C++ grafik kutubxonasi. U nafaqat grafiklarni, balki tarmoqni, ma'lumotlar bazalarini va boshqalarni ham qo'llab-quvvatlaydigan ko'plab komponentlarni o'z ichiga oladi. Umumiy ma'lumot: Foydalanishning boshidan dasturchi o'zaro bog'langan ramka oladi. Bu dasturning ko'p qismini yozishda faqat o'rnatilgan sinflardan foydalanish va ma'lum bir OT bilan aloqani deyarli butunlay tark etish imkonini beradi. Ushbu yondashuv ishlab chiquvchining mustaqilligi va erkinligini amalga oshiradi. (Dasturni bir nechta uchun qayta yozishning hojati yo'q operatsion tizimlar. Windows uchun algoritmni kompilyatsiya qilish mumkin ...
Bir kunlik post hayotdan so'ng, men karma oqayotganini seza boshladim, shuning uchun maqoladagi taqdimotning qabul qilinishi mumkin bo'lmagan uslubi va sub'ektivlik uchun oldindan uzr so'rayman.
Salom, Xabraxabr!
So'nggi paytlarda men Xubrikdagi Qt mavzusining mashhurligiga e'tibor bermay qo'ya olmadim, ammo shunga qaramay, sharhlarda men yolg'on va tushunarsiz narsalarni aytadigan odamlarni ko'rishda davom etaman. Ushbu post bilan men Qt haqidagi ba'zi noto'g'ri tushunchalarni yo'q qilishni va nima uchunligini aytmoqchi edim Java/Obj-C/.NET-dan yumshoq va yumshoq Qt-ga o'tishingiz kerak.
Kesish ostida juda ko'p taassurotlar, sub'ektivliklar va bu boradagi kamtarona fikrlarim bo'ladi eng ajoyib ilovalarni ishlab chiqish uchun asos. Biroq, maqolam hech bo'lmaganda texnik jihatdan foydali ma'noga ega bo'lishi uchun qiziqarli narsalarni qo'shishga harakat qilaman. Umid qilamanki, bu qiziqarli o'qish bo'ladi va sizga yoqadi.
Qani boshladik?
QString mevalar = "olma, banan, apelsin, banan"; QStringList fruitsList = fruits.split(", "); qDebug()<< fruitsList; // выведет в консоль [ "apple", "banana", "orange", "banana" ]
fruitsList.removeDuplicates();
fruits = fruitsList.join(", ");
qDebug() << fruits; // выведет в консоль "apple, banana, orange"
Shuni aytish kerakki, Qt XML va ma'lumotlar bazalari bilan qulay ishlash uchun modullarga ega ( mazali-mazali MVC kutesh tizimining integratsiyasi bilan), OpenGL, audio/video ish (Phonon), tarmoq dasturlash, WebKit2. O'rtacha loyiha oldida turgan vazifalar uchun bu oshxona 90% hollarda etarli bo'ladi va modullar bilan bog'liq muammolar kamdan-kam hollarda bo'ladi.
C++ ga bo'lgan sevgimni hisobga olsak, men Qt-ning platformalararo darajadagi turli xil ahamiyatsiz bo'lmagan narsalarni qo'llab-quvvatlashidan juda mamnunman. Bir necha marta men ayniqsa tushunarsiz daqiqalarni hal qilishim kerak edi, lekin bu shunday.
Import QtQuick 2.0 Rectangle ( id: sahifa kengligi: 320; balandlik: 480 rang: "och gray" Matn ( id: helloMatn matni: "Salom dunyo!" y: 30 anchors.horizontalCenter: page.horizontalCenter font.pointSize: 24; shrift. qalin: rost ) Grid (id: colorPicker x: 4; anchors.bottom: page.bottom; anchors.bottomMargin: 4 qator: 2; ustunlar: 3; interval: 3 katak ( cellColor: "qizil"; onClicked: helloText.color = cellColor ) Hujayra ( cellColor: "yashil"; onClicked: helloText.color = cellColor ) Hujayra ( cellColor: "blue"; onClicked: helloText.color = cellColor ) Hujayra ( cellColor: "sariq"; onClicked: helloTextcolor. ) Hujayra ( cellColor: "steelblue"; onClicked: helloText.color = cellColor ) Hujayra ( cellColor: "black"; onClicked: helloText.color = cellColor ) )
Hujayra ob'ektini amalga oshirish juda ahamiyatsiz va shu tarzda aniqlanadi
import QtQuick 2.0 Item ( id: konteyner xususiyati taxallus cellColor: rectangle.color signal bosildi(rangli hujayraColor) eni: 40; balandlik: 25 Rectangle (id: rectangle border.color: "oq" anchors.fill: ota ) MouseArea ( anchors. to'ldirish: ota onClicked: container.clicked(container.cellColor) ) )
Ushbu kodda bitta C++ qatori yo'q va u yaxshi ishlaydi. Bu yaxshi, shunday emasmi? Bu hatto o'zimni sehrgardek his qildim - bunday dasturni yig'ishdan ko'ra non sotib olish uchun do'konga borish osonroq. Biroq, murakkab ilovalarda QMLning o'zi etarli emas va biz uni C++ bilan birlashtiramiz. Bu Qt Software markazidagi ko'plab maqolalarda muhokama qilingan - masalan, .
Bu odamlar juda bag'rikeng va yangi kelganlarga yaxshi munosabatda bo'lishadi, bunday ajoyib odamlar bilan aloqa o'rnatish men uchun juda oson va qulay edi. Qt loyihasida har kim o'z savoliga javob olishi mumkin bo'lgan forumlar mavjud. Bu kulgili, lekin bu haqiqatan ham yomon juda jonli va u erda haqiqatan ham Qt ni o'rganish jarayonida yuzaga keladigan savollarga javob berish.
Aytgancha, menda qtbase daraxtida bir nechta majburiyatlar bor, shuning uchun siz menga PM orqali so'rashingiz mumkin va men sizning savollaringizga javob berishga harakat qilaman.
^ ajoyib Qt Creator, unda siz mo''jizalar yaratishingiz mumkin va buning uchun hech narsa olmaysiz.
Afsuski, menda qat'iy raqamlar yo'q, lekin ular kod har kuni optimallashtirilganligini va kodlar bazasi ehtiyotkorlik bilan kengaytirilganligini aytishadi - yangi xususiyatlar qo'shiladi va eski xatolar tuzatiladi (men buni ko'p marta ko'rganman). Bularning barchasi juda mos keladi va xursand bo'lish mumkin emas.
Bundan tashqari, platformalar hozir faol rivojlanmoqda iOS, Android, Windows Phone, endi ular uchun dasturlarni kompilyatsiya qilishingiz mumkin!
Bir kunlik post hayotdan so'ng, men karma oqayotganini seza boshladim, shuning uchun maqoladagi taqdimotning qabul qilinishi mumkin bo'lmagan uslubi va sub'ektivlik uchun oldindan uzr so'rayman.
Salom, Xabraxabr!
So'nggi paytlarda men Xubrikdagi Qt mavzusining mashhurligiga e'tibor bermay qo'ya olmadim, ammo shunga qaramay, sharhlarda men yolg'on va tushunarsiz narsalarni aytadigan odamlarni ko'rishda davom etaman. Ushbu post bilan men Qt haqidagi ba'zi noto'g'ri tushunchalarni yo'q qilishni va nima uchunligini aytmoqchi edim Java/Obj-C/.NET-dan yumshoq va yumshoq Qt-ga o'tishingiz kerak.
Kesish ostida juda ko'p taassurotlar, sub'ektivliklar va bu boradagi kamtarona fikrlarim bo'ladi eng ajoyib ilovalarni ishlab chiqish uchun asos. Biroq, maqolam hech bo'lmaganda texnik jihatdan foydali ma'noga ega bo'lishi uchun qiziqarli narsalarni qo'shishga harakat qilaman. Umid qilamanki, bu qiziqarli o'qish bo'ladi va sizga yoqadi.
Qani boshladik?
QString mevalar = "olma, banan, apelsin, banan"; QStringList fruitsList = fruits.split(", "); qDebug()<< fruitsList; // выведет в консоль [ "apple", "banana", "orange", "banana" ]
fruitsList.removeDuplicates();
fruits = fruitsList.join(", ");
qDebug() << fruits; // выведет в консоль "apple, banana, orange"
Shuni aytish kerakki, Qt XML va ma'lumotlar bazalari bilan qulay ishlash uchun modullarga ega ( mazali-mazali MVC kutesh tizimining integratsiyasi bilan), OpenGL, audio/video ish (Phonon), tarmoq dasturlash, WebKit2. O'rtacha loyiha oldida turgan vazifalar uchun bu oshxona 90% hollarda etarli bo'ladi va modullar bilan bog'liq muammolar kamdan-kam hollarda bo'ladi.
C++ ga bo'lgan sevgimni hisobga olsak, men Qt-ning platformalararo darajadagi turli xil ahamiyatsiz bo'lmagan narsalarni qo'llab-quvvatlashidan juda mamnunman. Bir necha marta men ayniqsa tushunarsiz daqiqalarni hal qilishim kerak edi, lekin bu shunday.
Import QtQuick 2.0 Rectangle ( id: sahifa kengligi: 320; balandlik: 480 rang: "och gray" Matn ( id: helloMatn matni: "Salom dunyo!" y: 30 anchors.horizontalCenter: page.horizontalCenter font.pointSize: 24; shrift. qalin: rost ) Grid (id: colorPicker x: 4; anchors.bottom: page.bottom; anchors.bottomMargin: 4 qator: 2; ustunlar: 3; interval: 3 katak ( cellColor: "qizil"; onClicked: helloText.color = cellColor ) Hujayra ( cellColor: "yashil"; onClicked: helloText.color = cellColor ) Hujayra ( cellColor: "blue"; onClicked: helloText.color = cellColor ) Hujayra ( cellColor: "sariq"; onClicked: helloTextcolor. ) Hujayra ( cellColor: "steelblue"; onClicked: helloText.color = cellColor ) Hujayra ( cellColor: "black"; onClicked: helloText.color = cellColor ) )
Hujayra ob'ektini amalga oshirish juda ahamiyatsiz va shu tarzda aniqlanadi
import QtQuick 2.0 Item ( id: konteyner xususiyati taxallus cellColor: rectangle.color signal bosildi(rangli hujayraColor) eni: 40; balandlik: 25 Rectangle (id: rectangle border.color: "oq" anchors.fill: ota ) MouseArea ( anchors. to'ldirish: ota onClicked: container.clicked(container.cellColor) ) )
Ushbu kodda bitta C++ qatori yo'q va u yaxshi ishlaydi. Bu yaxshi, shunday emasmi? Bu hatto o'zimni sehrgardek his qildim - bunday dasturni yig'ishdan ko'ra non sotib olish uchun do'konga borish osonroq. Biroq, murakkab ilovalarda QMLning o'zi etarli emas va biz uni C++ bilan birlashtiramiz. Bu Qt Software markazining ko'plab maqolalarida muhokama qilingan - masalan, u erda.
Bu odamlar juda bag'rikeng va yangi kelganlarga yaxshi munosabatda bo'lishadi, bunday ajoyib odamlar bilan aloqa o'rnatish men uchun juda oson va qulay edi. Qt loyihasida har kim o'z savoliga javob olishi mumkin bo'lgan forumlar mavjud. Bu kulgili, lekin bu haqiqatan ham yomon juda jonli va u erda haqiqatan ham Qt ni o'rganish jarayonida yuzaga keladigan savollarga javob berish.
Aytgancha, menda qtbase daraxtida bir nechta majburiyatlar bor, shuning uchun siz menga PM orqali so'rashingiz mumkin va men sizning savollaringizga javob berishga harakat qilaman.
^ ajoyib Qt Creator, unda siz mo''jizalar yaratishingiz mumkin va buning uchun hech narsa olmaysiz.
Afsuski, menda qat'iy raqamlar yo'q, lekin ular kod har kuni optimallashtirilganligini va kodlar bazasi ehtiyotkorlik bilan kengaytirilganligini aytishadi - yangi xususiyatlar qo'shiladi va eski xatolar tuzatiladi (men buni ko'p marta ko'rganman). Bularning barchasi juda mos keladi va xursand bo'lish mumkin emas.
Bundan tashqari, platformalar hozir faol rivojlanmoqda iOS, Android, Windows Phone, endi ular uchun dasturlarni kompilyatsiya qilishingiz mumkin!
Ma'ruza va laboratoriya ishi
Tarif bo'yicha: OS
Mavzu bo'yicha: Qt dasturlash muhiti
Bajarildi:
A-06-09 guruh talabalari
Smirnov Andrey
Marugin Mixail
1.Kirish
2.Tarix
3. Atrof-muhitning rivojlanishi
4. Qo'llash doirasi
5.Umumiy ma'lumot
6. Komponentlar
7. Rivojlanish muhiti
8.Qt Creator bilan ishlash
9. Misollar
10. Laboratoriyaga topshiriq
Kirish
Bundan tashqari, boshqa ko'plab dasturlash tillari uchun "bog'lanishlar" mavjud: Python - PyQt, Ruby - QtRuby, Java - Qt Jambi, PHP - PHP-Qt va boshqalar.
Ko'pgina zamonaviy operatsion tizimlarda uning yordami bilan yozilgan dasturiy ta'minotni manba kodini o'zgartirmasdan oddiygina har bir OT uchun dasturni kompilyatsiya qilish orqali ishga tushirishga imkon beradi. Grafik interfeys elementlaridan tortib tarmoq, ma'lumotlar bazalari va XML bilan ishlash sinflarigacha bo'lgan amaliy dasturiy ta'minotni ishlab chiqishda talab qilinishi mumkin bo'lgan barcha asosiy sinflarni o'z ichiga oladi. Qt to'liq ob'ektga yo'naltirilgan, osongina kengaytirilishi mumkin va komponentlarga asoslangan dasturlash usullarini qo'llab-quvvatlaydi.
4.5 versiyasidan boshlab Qt turli litsenziyalar ostida tarqatildi. Bu shuni anglatadiki, agar siz tijorat ilovalarini yaratmoqchi bo'lsangiz, siz Qt tijorat litsenziyasini sotib olishingiz kerak; Agar siz ochiq kodli dastur yaratayotgan bo'lsangiz, GPL litsenziyasi bilan versiyadan foydalanishingiz mumkin.
Hikoya
Qt ishlab chiqish vositalari birinchi marta 1995 yil may oyida ommaga ma'lum bo'ldi. Qt dastlab Haarvard Nord va Erik Chamb-Ing tomonidan ishlab chiqilgan.
1991 yilda Haarvard Erik bilan birgalikda dizayn qarorlari qabul qilingan holda Qt ni samarali shakllantirgan sinflarni yozishni boshladi.
Keyingi yili Irik "signallar va slotlar" g'oyasini o'ylab topdi - oddiy, ammo kuchli GUI dasturlash paradigmasi hozirda bir nechta boshqa vositalar tomonidan qabul qilingan.
1993 yilga kelib, Haarward va Eirik birinchi Qt grafik dvigatelini ishlab chiqdilar va o'zlarining vidjetlarini yaratishlari mumkin edi.
Qiziqarsiz eslatmalar: "Q" harfi sinf prefiksi sifatida tanlangan, chunki u Haarward ishlatgan Emacs shriftida chiroyli ko'rinishga ega edi. "Asboblar to'plami" degan ma'noni anglatish uchun "t" harfi qo'shildi.
Rivojlanish
1995 yil aprel oyida Norvegiyaning Metis kompaniyasi ular bilan Qt asosida dasturiy ta'minotni ishlab chiqish bo'yicha shartnoma imzoladi.
1995 yil 26 may - Qt ning birinchi ommaviy versiyasi. Qt Windows va Unix ishlanmalarida ishlatilishi mumkin edi va dasturiy ta'minot interfeysi ikkala platformada ham bir xil edi.
1996 yildan 2001 yilgacha - Qt3 versiyasini ishlab chiqish. Qt endi Windows, Mac Os X va Unix tizimlarida ishlagan.
2005 yil yozi - Qt 4.0 chiqarildi. 500 ga yaqin sinflar va 9000 dan ortiq funksiyalar bilan Qt 4 har qanday oldingi versiyadan kattaroq va boyroq; u bir nechta kutubxonalarga bo'lingan, shuning uchun ishlab chiquvchilar Qt ning faqat kerakli qismlaridan foydalanishlari mumkin.
Bugungi kunda versiya Qt4.8
Qt 4 oldingi versiyalarga nisbatan katta yaxshilanishdir; u kuchli va ishlatish uchun qulay konteyner sinflarining mutlaqo yangi to'plamini, takomillashtirilgan model/ko'rinish arxitektorlari funksionalligini, tez va moslashuvchan 2D grafik ramkasini va Unicode matnini ko'rish va tahrirlash uchun kuchli sinflarni o'z ichiga oladi, shu jumladan minglab kichik yaxshilanishlar haqida gapirmasa ham bo'ladi. sinflarning butun spektri Qt.
Qt 4 - Qt ning birinchi versiyasi, ham tijorat, ham ochiq kodli ishlab chiqish uchun barcha qo'llab-quvvatlanadigan platformalarda mavjud.
Qo'llash sohasi
Windows, Linux, Mac OS X uchun ish stoli ilovalarini yaratish qobiliyati (konsolda ham, oynali grafik interfeys bilan ham). So'nggi bir necha yil ichida ishlab chiqarilgan mobil qurilmalar sonini ko'paytirish tendentsiyasi kuzatildi. Natijada Qt mobil platformalarga ko'chirildi: Symbian, Maemo, MeeGo. Qt Lighthouse-ni Android platformasiga ko'chirishning muvaffaqiyatli tajribasi haqida ham bilamiz.
Umumiy ma'lumot
Ko'pgina zamonaviy operatsion tizimlarda uning yordami bilan yozilgan dasturiy ta'minotni manba kodini o'zgartirmasdan oddiygina har bir OT uchun dasturni kompilyatsiya qilish orqali ishga tushirishga imkon beradi.
Grafik interfeys elementlaridan tortib tarmoq, ma'lumotlar bazalari va XML bilan ishlash sinflarigacha bo'lgan amaliy dasturiy ta'minotni ishlab chiqishda talab qilinishi mumkin bo'lgan barcha asosiy sinflarni o'z ichiga oladi.
Qt to'liq ob'ektga yo'naltirilgan, osongina kengaytirilishi mumkin va komponentlarga asoslangan dasturlash usullarini qo'llab-quvvatlaydi.
Kutubxonaning Microsoft Windows, X11 grafik quyi tizimiga ega UNIX-sinf tizimlari, iOS, Android, Mac OS X, Microsoft Windows CE, QNX, oʻrnatilgan Linux tizimlari va S60 platformasi uchun versiyalari mavjud. Hozirda Windows Phone’ga Qt qo‘llab-quvvatlashini joriy etish imkoniyati ko‘rib chiqilmoqda. Xaykuga portlash ham davom etmoqda.
Qt ning boshqa kutubxonalardan o'ziga xos xususiyati foydalanishdir Meta ob'ekt kompilyatori (MOC)- dastlabki manba kodini qayta ishlash tizimi (umuman, Qt sof C++ uchun emas, balki uning maxsus tili uchun kutubxona bo'lib, undan MOC har qanday standart C++ kompilyatori tomonidan keyinchalik kompilyatsiya qilish uchun “tarjima qilinadi”). MOC sizga uyalar va signallar kabi tushunchalarni kiritish orqali kutubxonalar kuchini ko'p marta oshirish imkonini beradi. Bundan tashqari, bu kodni yanada ixcham qilish imkonini beradi. MOC yordam dasturi Q_OBJECT makrosini o'z ichiga olgan sinf ta'riflari uchun C++ sarlavhali fayllarini qidiradi va metaobject kodini o'z ichiga olgan qo'shimcha C++ manba faylini yaratadi.
Qt o'z plaginlaringizni yaratish va ularni to'g'ridan-to'g'ri vizual muharrir paneliga joylashtirish imkonini beradi. Shuningdek, oyna o'lchami o'zgartirilganda ularni ekranda joylashtirish, ko'rsatish va qayta chizish bilan bog'liq vidjetlarning odatiy funksiyalarini kengaytirish imkoniyati mavjud.
Qt, WYSIWYG rejimida dialoglar va shakllar yaratish imkonini beruvchi Qt Designer deb nomlangan vizual grafik interfeysni ishlab chiqish muhiti bilan birga keladi.
Qt taqsimoti "Qt Linguist" ni o'z ichiga oladi - dasturni mahalliylashtirish va ko'plab tillarga tarjima qilishni soddalashtirishga imkon beruvchi grafik yordam dasturi; va "Qt Assistant" - kutubxona hujjatlari bilan ishlashni osonlashtiradigan Qt yordam tizimi, shuningdek, Qt asosida ishlab chiqilgan dasturiy ta'minot uchun platformalararo yordam yaratish imkonini beradi. 4.5.0 versiyasidan boshlab, Qt to'plami kod muharriri, yordam, Qt Designer grafik vositalari va ilovalarni disk raskadrovka qilish qobiliyatini o'z ichiga olgan Qt Creator ishlab chiqish muhitini o'z ichiga oladi. "Qt Creator" kompilyator sifatida GCC yoki Microsoft VC++ dan, tuzatuvchi sifatida GDB dan foydalanishi mumkin. Windows versiyalari uchun kutubxona kompilyator, MinGW sarlavhasi va obyekt fayllari bilan jihozlangan.
Komponentlar(Keling, bir juftlikni ajratib ko'rsatamiz )
Kutubxona bir nechta modullarga bo'lingan, kutubxonaning to'rtinchi versiyasi uchun u:
QtCore- boshqa modullar tomonidan ishlatiladigan kutubxona asosiy sinflari;
QtGui- grafik interfeys komponentlari;
QtNetwork- tarmoq dasturlash uchun sinflar to'plami. Turli xil yuqori darajadagi protokollarni qo'llab-quvvatlash versiyadan versiyaga farq qilishi mumkin. 4.2.x versiyasida FTP va HTTP protokollari bilan ishlash sinflari mavjud. QTcpServer, TCP uchun QTcpSocket va UDP uchun QUdpSocket kabi sinflar TCP/IP protokollari bilan ishlashga mo'ljallangan;
QtOpenGL- OpenGL bilan ishlash uchun sinflar to'plami;
QtSql- SQL tuzilgan so'rovlar tilidan foydalangan holda ma'lumotlar bazalari bilan ishlash uchun sinflar to'plami. 4.2.x versiyasida ushbu modulning asosiy sinflari: QSqlMa'lumotlar bazasi- ma'lumotlar bazasiga ulanishni ta'minlash uchun sinf; ma'lum bir ma'lumotlar bazasi bilan ishlash uchun QSqlDriver sinfidan meros bo'lib qolgan ob'ekt talab qilinadi - ma'lum bir ma'lumotlar bazasi uchun amalga oshiriladigan va kompilyatsiya qilish uchun ma'lumotlar bazasi SDK ni talab qilishi mumkin bo'lgan mavhum sinf. Masalan, FireBird/InterBase ma'lumotlar bazasi uchun drayverni yaratish uchun ushbu ma'lumotlar bazasi uchun yetkazib berish to'plamiga kiritilgan .h fayllari va statik bog'lovchi kutubxonalar kerak;
QtScript- Qt skriptlari bilan ishlash darslari;
QtSvg- Scalable Vector Graphics (SVG) ma'lumotlarini ko'rsatish va ular bilan ishlash sinflari;
QtXml- XML bilan ishlash moduli, SAX va DOM ish modellarini qo'llab-quvvatlaydi;
QtDesigner- o'z vidjetlaringiz uchun QtDesigner kengaytmalarini yaratish sinflari;
QtUITools- ilovada Qt Designer shakllarini qayta ishlash sinflari;
QtAssistant- ma'lumot tizimi;
Qt3Support- Qt kutubxonasining 3.x.x versiyasi bilan muvofiqligi uchun zarur bo'lgan sinflarga ega modul;
QtTest- UNIT testlari bilan ishlash moduli;
QtWebKit- Qt-ga integratsiyalangan va uning sinflari orqali kirish mumkin bo'lgan WebKit moduli;
QtXmlPatterns- XQuery 1.0 va XPath 2.0 ni qo'llab-quvvatlaydigan modul;
Fonon- mahalliy va qurilmalardan va tarmoq orqali video va audioni tinglash va yozib olishni qo'llab-quvvatlash moduli;
QtCLucene- Qt 4.4 da Assistantning yangi versiyasida qo'llaniladigan to'liq matnli qidiruvni qo'llab-quvvatlash moduli;
ActiveQt- Windows ostida Qt ishlab chiquvchilari uchun ActiveX va COM texnologiyalari bilan ishlash moduli.
QtDeklarativ- dinamik, moslashtirilgan foydalanuvchi interfeyslarini yaratish uchun deklarativ asosni ta'minlovchi modul.
Kutubxona o'zining .pro fayli deb nomlangan loyiha formatidan foydalanadi, unda qanday fayllar kompilyatsiya qilinishi, sarlavha fayllarini qanday izlash yo'llari va boshqa ko'plab ma'lumotlar haqida ma'lumot mavjud.
Keyinchalik, qmake yordam dasturidan foydalanib, ular kompilyator make yordam dasturi uchun makefile yaratish uchun ishlatiladi. Microsoft Visual Studio 2003/2005/2008/2010 bilan integratorlar yordamida ham ishlash mumkin. Yaqinda Eclipse-ga integratsiya kutubxonaning 4.x.x versiyasi uchun mavjud bo'ldi.
Java ishlab chiquvchilari Qt-dan bir xil ishlab chiqaruvchining Qt Jambi ramkasidan foydalangan holda foydalanishlari mumkin (Qt Software 2009 yilda ushbu ramkani ishlab chiqishni rasman to'xtatgan).
«+»
Qt loyihasining muhim afzalliklaridan biri bu yuqori sifatli hujjatlarning mavjudligi. Hujjatlar haqidagi maqolalar ko'plab misollar bilan ta'minlangan. Kutubxonaning manba kodi yaxshi formatlangan, keng sharhlangan va o'qish oson, bu esa Qt ni o'rganishni osonlashtiradi.
Rivojlanish muhiti
Qt Creator - bu C, C++ va QML tillarida ishlab chiqish uchun platformalararo bepul IDE. Qt ramkasi bilan ishlash uchun Trolltech (Nokia) tomonidan ishlab chiqilgan. QtWidgets va QML yordamida grafik tuzatuvchi interfeysi va vizual interfeysni ishlab chiqish vositalarini o'z ichiga oladi. Qo'llab-quvvatlanadigan kompilyatorlar: Gcc, Clang, MinGW, MSVC, Linux ICC, GCCE, RVCT, WINSCW.
Qt Creator-ning asosiy maqsadi turli platformalarda Qt ramkasidan foydalangan holda ilovalarni ishlab chiqishni soddalashtirishdir. Shu sababli, har qanday ishlab chiqish muhitiga xos xususiyatlar orasida QML-dagi ilovalarni disk raskadrovka qilish va Qt konteynerlaridan ma'lumotlarni tuzatuvchida ko'rsatish, QML va QtWidgets-da o'rnatilgan interfeys dizayneri kabi o'ziga xos xususiyatlar ham mavjud.
Qt Creator da ishlash
Qt Creator yangi loyihalar, shakllar, sinf fayllari va hokazolarni yaratish uchun qulay "sehrgar" ga ega. Asosiy oyna uchun ui faylini yaratish o'rniga, vizual dasturlash sohasiga tegmasdan loyihaga oddiy kodni kiritishingiz mumkin. Loyihani yaratish yoki ochgandan so'ng, rivojlanish muhitining o'zi bizning oldimizda paydo bo'ladi. Avvaliga u g'ayrioddiy ko'rinadi. Misol uchun, mashhur yorliqlar (tikanlar bilan yorliqlar) yo'q. To'g'rirog'i, ular tahrirlovchi fayllardan tashqari hamma narsa uchun mavjud. Fayllarning o'zi ikkita ro'yxatda mavjud: loyiha fayllari (sukut bo'yicha chap panelda) va allaqachon ochiq fayllar (muharrir panelining yuqori qatorida). Nega tablardan voz kechishga qaror qildingiz? Menimcha, bu ekran maydonini tejash uchun.
Yana bir g'ayrioddiy nuqta juda nisbiydir, chunki "muloqotsiz" interfeysi uzoq vaqtdan beri ba'zi boshqa dasturlar (masalan, TEA muharriri) tomonidan qabul qilingan. Qt Creator-da matnni qidirish va almashtirish uchun kiritish maydonchalari paydo bo'ladi va siz matn kiritganingizda, topilgan mosliklar muharrirda darhol ta'kidlanadi. Keyinchalik qidirish uchun F3 mavjud va almashtirish uchun alohida kiritish maydoni mavjud. Variantlar ham yaqin joyda joylashgan. Bularning barchasi tufayli bunday operatsiyalar tez va qulay tarzda amalga oshiriladi. Xuddi shu narsa ma'lumot va disk raskadrovka panellariga ham tegishli: modallik yo'qligi, asosiy oynani bir-biriga yopishgan keraksiz oynalar va interfeys arxitekturasiga avvalgi yondashuvning boshqa zavqlari. Hammasi bitta asosiy oynada!
Qt Creator, shuningdek, kod muharriri haqida g'amxo'rlik qildi. Bugungi kunda sintaksisni ta'kidlashdan kam odam hayratga tushishi mumkin, shuning uchun boshqa foydali xususiyatlarga o'tamiz. Masalan, "to'liq kod tahlilchisi" mavjud - bu muharrirning kodni dasturlash tili nuqtai nazaridan to'g'riligini tekshirish qobiliyati. Kodni kiritganingizda, uni kompilyatsiya qilishdan oldin qaerda sintaksik xatoga yo'l qo'yganingizni ko'rishingiz mumkin. Ko'p hollarda u ishlaydi, garchi istisnolar mavjud. Avtomatik yakunlash ajoyib ishlaydi: sinf namunasi nomini kiriting, nuqta yoki “->” qo'ying - va siz sinf a'zolari bilan ochiladigan ro'yxatni olasiz. Kod bloklarining katlamasi mavjud - "katlama". Biroq, men kodsiz aniqroq ekanligiga ishonaman, shuning uchun men bu variantni hech qachon ishlatmayman.
Kod orqali navigatsiya yaxshi bajarilgan - va tashqi ctaglarsiz. Kursorni funktsiya yoki o'zgaruvchi nomiga qo'ying va F2 tugmasini bosing, shundan so'ng muharrir deklaratsiya joyiga o'tadi. Shift-F2 - deklaratsiya va kod o'rtasida almashinadi va F4 - shunchaki sarlavha va cpp faylini almashtiradi. Agar sichqoncha ko'rsatkichini kodda chaqirilgan funksiya nomi ustiga olib kelsangiz, uning parametrlari haqida maslahat paydo bo'ladi.
mos yozuvlar tizimi quyidagicha ishlaydi. Aytaylik, sizning kodingizda QMenu kabi o'zgaruvchi bor. Agar kursorni uning ustiga qo'yib, F1 tugmasini bossangiz, QMenu sinfining tavsifi bilan yordam paneli paydo bo'ladi. Asosiy oynada barcha Qt hujjatlari mavjud bo'lgan Yordam yorlig'i ham mavjud.
Shunday qilib, siz ko'p vaqtingizni muharrir yorlig'ida o'tkazasiz. Nima uchun Qt Creator sozlamalarida turli muharrirlar uchun beshta bo'lim mavjud - sukut bo'yicha, skriptlar uchun, C++ uchun, loyihalar va Perforce uchun (tijoriy versiyani boshqarish tizimi) aniq emas. C++ muharriri sozlamalari Qt dasturingiz kod muharriri uchun sozlamalardir. Shuni ta'kidlaymanki, Qt Creator-ning eng so'nggi "suratlarida" shrift sozlamalari hali ham bitta bo'limda tashkil etilgan, buni kutish kerak.
Orqa yorug'lik va shriftlarni o'rnatish foydalidir, chunki standart sozlamalar bilan ishlash juda qulay emas. Birinchidan, shrift o'lchami juda kichik, ikkinchidan, #ifdef / #endif ichiga kiritilgan kod bloklari tahlilchi tomonidan "o'chirilgan kod" (Qt Creator sozlamalaridan olingan ifoda) sifatida talqin qilinadi va rangli bo'ladi. kulrang- yozilgan narsalarni tahlil qilish unchalik qulay emas. Agar sizga “katlama” yoqmasa, muharrir sozlamalarida katlama belgilarini ko‘rsatishni o‘chirib qo‘ying.
Siz tahrirlovchi maydonlarida xatcho'plar va to'xtash nuqtalarini o'rnatishingiz mumkin. Tahrirlovchi panelini cheksiz sonli ichki panellarga bo'lish mumkin - Konquerorga o'xshash. Shunday qilib, siz bir vaqtning o'zida ekranda bir nechta faylni yoki bir xil hujjatni, lekin turli joylarda tahrirlashingiz mumkin. Buning uchun avval muharrir panelini bo'lish kerak (masalan, Oyna - Split Top/Post orqali), so'ngra Oyna - Hujjatni takrorlash menyu bandini tanlang. Ushbu yondashuv ba'zan xatcho'plar orqali zerikarli navigatsiyadan ko'ra foydaliroqdir.
Qt Creator arxitekturasi plaginlarga asoslangan. Tahrirlovchi plagin, xatcho'p mexanizmi plagin, loyiha fayllari bilan panel ham plagin va hokazo. Roʻyxat o'rnatilgan plaginlar Yordam - Plaginlar haqida menyusida topishingiz mumkin. Ehtimol, kelajakda qo'shimcha plaginlarni o'rnatish mumkin bo'ladi, lekin hozirgacha men buning mexanizmini topmadim va qo'shimcha plaginlarning o'zini ham topmadim. Ammo yig'ilishlarning o'zida yangi plaginlar misli ko'rilmagan tezlikda paydo bo'ladi. Bir oy ichida Subversion va Git uchun qo'llab-quvvatlash modullari paydo bo'ldi. Umuman olganda, Qt Creator endi tabiatan vaqtinchalik. Qt Creator menyu elementlari versiyadan versiyaga o'zgartiriladi va boshqa pastki menyularga o'tkaziladi. Qo'shimcha funktsiyalar doimiy ravishda tug'ilishi haqida gapirmaslik kerak.
Keling, sozlamalar oynasiga biroz e'tibor qarataylik, xayriyatki, ularning ko'plari bor. Siz klaviatura yorliqlarini sozlashingiz va bundan tashqari ularni tashqi fayllar yordamida import/eksport qilishingiz mumkin. Bu sevimli klaviatura yorliqlarini mashinadan mashinaga o'tkazish uchun qulay. Qt Creator sukut bo'yicha ikkita oldindan o'rnatilgan faylni o'z ichiga oladi: MS Visual C++ va Xcode uchun. Avtomatik to'ldirish, chekinish, sintaksisni ajratib ko'rsatish va boshqalar bilan bog'liq barcha narsalar muharrir sozlamalarida - Matn muharriri.
Qt Creator-dagi yana bir qiziqarli vosita Locator (eski versiyalarda - Tez topish). Fokusni unga ko'chirish uchun Ctrl-K tugmalarini bosing. Oddiy qidiruv paneliga o'xshaydi, lekin xizmat qiladi tezkor qidiruv xohlaganingiz. Aniqroq aytganda, u fayllarni, fayllarni, sinflarni, funktsiyalarni qidiradi. Qidiruv vazifasini takomillashtirish uchun o'zgartiruvchi belgilarni qo'llab-quvvatlaydi. Misol uchun, siz qApp global ko'rsatgichining tavsifi uchun Qt hujjatlariga qarashni xohlaysiz. Nima qilish kerak? Ilgari siz hujjatlarni brauzer orqali ochishingiz va u erda qidirishingiz kerak edi. Ammo Qt Creator-da Locator har doim qo'lda bo'lganda, qidiruv satriga yozish kifoya qiladimi? qapp va Enter tugmasini bosing. 100-qatorga o'tingmi? Iltimos, raqamni tering va yana kiriting.
Va nihoyat, GDB tuzatuvchisi bilan o'zaro aloqaga qaytaylik. Qt Creator o'zining grafik interfeysi orqali nafaqat joriy loyihani, balki har qanday loyihani disk raskadrovka qilish imkonini beradi tashqi dastur- albatta, agar u disk raskadrovka ma'lumotlari bilan tuzilgan bo'lsa. Nosozliklarni tuzatishda har xil turdagi ma'lumotlar ko'rsatiladi alohida yorliqlar: iplar, o'zgaruvchilar, uzilish nuqtalari va qismlarga ajratish. QStringList misoli tuzatuvchida ayniqsa aniq ko'rinadi - uning barcha elementlari ko'rinadi. GDB standart chiqishining o'zi sukut bo'yicha o'chirilgan, shuningdek, protsessor registrlari tarkibi haqidagi ma'lumotlar kabi ba'zi boshqa yorliqlar. Agar dastur biron sababga ko'ra ishlamay qolsa, disk raskadrovka panelidagi ma'lumotlar koddagi xatolik qaerda sodir bo'lganligini darhol ko'rsatadi.
1-misol
Bizning birinchi dasturimiz grafik foydalanuvchi interfeysi (GUI - Graphical User Interface) bilan bo'ladi.
#o'z ichiga oladi
#o'z ichiga oladi
int main (int argc, char *argv)
QApplication ilovasi (argc, argv);
QPushButton *newbtn = yangi QPushButton(QObject::tr("OK"));
QObject::connect(newbtn, SIGNAL(bosilgan()), &app, SLOT(chit()));
newbtn->o'lchamini o'zgartirish (180,40);
newbtn->show();
app.exec();
Birinchi ikkita satr Qt sinfining ta'riflari.
Bu sinflar Qt kutubxonasining amaliy dasturlash interfeysiga (API) tegishli. Kutubxonada ushbu sinflarni tavsiflovchi bir xil nomdagi fayllar mavjud.
6-qator QApplication ob'ektini yaratadi. Bu sinf barcha dastur resurslarini boshqaradi. Keyin QPushButton sinfining ob'ekti "OK" yozuvi bilan yaratiladi.
Tugma vidjetdir. 8-qator tugmaning bosilgan () signalini QApplication3 obyektining quit() uyasiga ulash uchun ishlatiladi. 9-qatorda biz vidjet hajmini o'rnatamiz va 10-qatorda biz uni ko'rsatamiz. 11-qator Qt ilovasini boshqarishni o'tkazish uchun ishlatiladi. Ushbu nuqtada dastur foydalanuvchi va tizim hodisalarini qayta ishlash uchun tsiklga kiradi.
2-misol: Foydalanuvchi kiritishini tekshirish
Foydalanuvchidan matn maydoniga ba'zi ma'lumotlarni kiritish so'ralganda, umuman kutilmagan narsalarni olish odatiy holdir. Foydalanuvchi raqamlarni so'z bilan kiritishi, noto'g'ri o'nlik ajratgichdan foydalanishi yoki hudud kodini kiritishni unutishi mumkin telefon raqami. Shunday qilib, ko'p hollarda ko'rsatilgan ma'lumotlarning to'g'riligini (qabul qilinishini)1 tekshirish kerak.
Qt QValidator sinfini o'z ichiga oladi, u kiritilgan ma'lumotlarning to'g'riligini ta'minlaydi. Ma'lumotlar sinfidan to'g'ridan-to'g'ri foydalanish mumkin emas. Ma'lumotlarni tekshirish uchun siz QIntValidator, QDoubleValidator, QRegExpValidator tayyor quyi sinflaridan foydalanishingiz yoki o'zingiz kichik sinf yozishingiz kerak bo'ladi.
validate(QString & input, int & pos) usuli tekshiriladigan satr va kursor o'rnini uzatadi. Usul quyidagi qiymatlarni qaytarishi mumkin:
QValidator::Invalid - satr yaroqsiz.
QValidator::Qabul qilinadi - string qabul qilinadi.
QValidator::Intermediate - satrni hozirgi holatda qabul qilib bo'lmaydi, lekin u haqiqiy bo'lishi mumkin.
Satrning haqiqiy son ekanligini tekshiradigan dastur yozamiz. Keling, tayyor QDoubleValidator sinfidan foydalanamiz:
MainWindow::MainWindow()
panjara = yangi QGridLayout; doubleedit = yangi QLineEdit;
lbdouble = yangi QLabel(tr("Double:"));
lbresult = yangi QLabel(tr("Natija:"));
natija = yangi QLabel;
vld = yangi QDoubleValidator (-5, 2999, 5, bu);
vld->setNotation(QDoubleValidator::ScientificNotation);
doubleedit->setValidator(vld);
grid->addWidget(lbdouble, 0, 0);
grid->addWidget(doubleedit, 0, 1);
grid->addWidget(lbresult, 1, 0); grid->addWidget (natija, 1, 1);
hajmini o'zgartirish (160, 120); setLayout (to'r); ...
QDoubleValidator sinf konstruktori quyidagi parametrlarni qabul qilishi mumkin:
QDoubleValidator :: QDoubleValidator (ikkita pastki, ikkita yuqori, int o'nli kasrlar, QObject * ota-ona)
Haqiqiy sonlar diapazoni pastdan yuqoriga qarab. o'nli kasrlar - o'nlik ajratgichdan keyingi raqamlar soni2.
QDoubleValidator sinfining setNotation (Notation) usulidan foydalanib, ilmiy belgilarning haqiqiyligini belgilashingiz mumkin:
QDoubleValidator::StandardNotation - standart yozuv (Masalan: 1.124 yoki -2).
QDoubleValidator::ScientificNotation - ilmiy belgi, ya'ni. raqam eksponensial qismga ega bo'lishi mumkin (masalan: 2.7E-3 yoki 3.3E+2)
Kiritilgan ma'lumotlarning haqiqiyligini tekshirish uchun validate() usulidan foydalanamiz:
MainWindow::MainWindow()
QObject :: ulanish (doubleedit, SIGNAL (textChanged (const QString &)), bu, SLOT (showresult(const QString &)));
void MainWindow::showresult(const QString &text)
QString numtext = matn;
if (vld->validate(numtext, pos) == 0) result->setText(tr("yaroqsiz"));
if (vld->validate(numtext, pos) == 1) result->setText(tr("Intermediate"));
if (vld->validate(numtext, pos) == 2) result->setText(tr("Qabul qilinadi"));
Dastur kodi
main.cpp
#o'z ichiga oladi
#o'z ichiga "mainwindow.h"
int main (int argv, char **args)
QApplication ilovasi (argv, args);
Asosiy oyna oynasi;
app.exec();
Mainwindiw.h#ifndef MAINWINDOW_H#MAINWINDOW_Hni aniqlang #includeMisol 3. 2D grafika
QPainter sinfidan foydalanib, biz QPaintDevice sinfidan meros bo'lib qolgan har qanday ob'ektga chizishimiz mumkin (QWidget, QPrinter, QImage, QGLFramebufferObject va boshqalar). Siz geometrik shakllarni, pikselli xaritalarni, matnlarni chizishingiz mumkin. Birinchidan, QPainter bilan ishlashda foydali bo'lishi mumkin bo'lgan sinflarni ko'rib chiqaylik.
QPoint va QPointF sinflari ikki o'lchovli koordinatalar tizimidagi nuqta o'rnini belgilash uchun ishlatiladi. QPoint - butun sonlar uchun va QPointF - haqiqiy sonlar uchun. Nuqtalarga qo'shish, ayirish, ko'paytirish va bo'lish amallari qo'llaniladi:
QPoint nuqtasi (5, 5);
QPoint nuqtasi 2(10, 10);
Nuqtalarni bir-biri bilan va ularning koordinatalari nolga teng yoki yo'qligini ham solishtirish mumkin.
QPoint nuqtasi (5, 10);
QPoint nuqtasi 2(5, 10);
agar (nuqta == nuqta2)
bln = point.isNull();
QSize va QSizeF sinflari hajmni saqlash uchun ishlatiladi. QPoint va QPointF sinflariga o'xshash usullardan tashqari, bu sinflar grafik ob'ektni masshtablash imkonini beruvchi scale() usuliga ega.
QRect va QRectF sinflari to'rtburchaklar maydonlarni saqlash uchun ishlatiladi (yuqori chap burchak koordinatalari va o'lchami):
QRectF(QPointF nuqtasi, QSizeF hajmi);
QLine va QLineF sinflari to'g'ri chiziqni tasvirlaydi. QPolygon va QPolygonF sinflari to'g'ri chiziqlardan hosil bo'lgan yopiq figurani tasvirlaydi.
QColor sinfidan foydalanib, siz rang ma'lumotlarini saqlashingiz mumkin. Qt muhiti 3 ta rangli modelni qo'llab-quvvatlaydi: RGB, CMYK va HSV. Uchun rang modeli RGB QRgb tuzilishi mavjud. QColor sinf ob'ektida rang o'rnatishning bir necha yo'li mavjud:
Parametrlarni konstruktorga o'tkazish
unsigned int red = 50;
unsigned int green = 100;
unsigned int blue = 0;
unsigned int alpha = 128;
QColor mycolor (qizil, yashil, ko'k, alfa);
QRgb rgb1 = (50, 100, 0);
QColor mycolor2(rgb1);
QColor::setRgb(), QColor::setRgba(), QColor::setRgbF(), QColor::setHsv(), QColor::setHsvF(), QColor::setCmyk(), QColor:: usullaridan foydalanish setCmykF( )
mycolor.setHsv(200, 100, 50);
Bir modelda rangni o'rnatish va uni boshqasida o'qish mumkin:
unsigned int h, s, v;
QColor mycolor (100, 100, 100);
mycolor.getHsv(&h, &s, &v);
QPainter sinfiga qaytaylik. Chizishni boshlash uchun biz QPainter sinfining ob'ektini yaratishimiz va uni bo'yash uchun ob'ektga ko'rsatgich berishimiz kerak:
QPainter pnt(bu);
pnt.drawLine(chiziq);
void Wnd::paintEvent(QPaintEvent *voqea)
QLineF liniyasi (10.0, 80.0, 90.0, 20.0);
pnt.begin(bu);
pnt.drawLine(chiziq);
QWidget::paintEvent() usuli qayta chizilishi kerak bo'lgan vidjetlarda chaqiriladi.
Ko'pgina hollarda bo'yash bir nechta bo'yoq ob'ektlarida bitta QPainter ob'ekti tomonidan amalga oshiriladi. Eski chizma sozlamalarini saqlash uchun (yangi ob'ektga o'tishda), siz QPainter :: saqlash () va QPainter :: tiklash () usullaridan foydalanishingiz mumkin. QPainter::save() o'rnatish stekiga suriladi va QPainter::restore() ochiladi.
Shaklning konturini chizish uchun QPainter ::setPen() yordamida QPen (qalam) sinf ob'ektini QPainter sinf ob'ektiga o'tkazishingiz kerak.
Tegishli usullardan foydalanib, siz qalam uslubini o'rnatishingiz mumkin (rangi, qalinligi, chiziq uchlari turi).
Yopiq konturlarni to'ldirish uchun cho'tka ishlatiladi, ya'ni. QBrush sinfining ob'ekti. QPen sinfiga o'xshab, cho'tka QPainter::setBrush() usuli yordamida o'rnatiladi. Unga QBrush obyektini yoki oldindan belgilangan BrushStyle uslublaridan birini o‘tkazishingiz mumkin:
QPainter pnt(bu);
pnt.setBrush (QBrush (Qt :: ko'k, Qt :: VerPattern)); // vertikal soyali ko'k cho'tka
QPainter klassi ob'ektlarni aylantirish, masshtablash, siljitish va egilish imkonini beradi. Ushbu operatsiyalar uchun mos usullar mavjud: rotate(), scale(), translate(), sheap().
Qt kutubxonasi anti-aliasing texnikasini qo'llab-quvvatlaydi:
pnt.setRenderHint(QPainter:: antialiasing, rost);
tl;dr - C++ da o'zaro platformali oynali ilovalar yaratish uchun Qt kutubxonasi.
Qt, loyiha sifatida, C++ dasturchilarining dasturlar uchun grafik interfeyslarni (GUI) ishlab chiqish uchun qulay asboblar to'plamiga ega bo'lish istagidan kelib chiqqan. Agar, masalan, Java-da AWT ushbu maqsadlar uchun qutidan chiqsa va Python Tk-da, C++ da shunga o'xshash narsa yo'q edi. Va nafaqat GUI-ni ishlab chiqish, balki tarmoq, multimedia va boshqa juda mashhur narsalar bilan ishlash uchun darslar. Bu ishlab chiquvchilarni juda bezovta qilishdi. Xo'sh, talab borligi sababli, taklif yetib borishiga ko'p vaqt kerak bo'lmadi. 1995 yilda kutubxonaning birinchi nashri chiqdi. O'shandan beri Qt faqat interfeysni ishlab chiqishdan tashqari tezlik bilan kengaydi.
Shuning uchun, Qt GUI yaratish uchun sinflar to'plami sifatida emas, balki barcha holatlar uchun to'liq huquqli sinflar to'plami sifatida ko'rib chiqilishi kerak. Bu dasturchi deyarli har qanday ilovani yaratish uchun kerak bo'lishi mumkin bo'lgan hamma narsa (yoki deyarli hamma narsa) to'plamidir. Kutubxonaning tuzilishi mantiqiy jihatdan tarkibiy qismlarga bo'lingan, ular juda ko'p va har biri bilan yangi versiya Qt ularda tobora ko'proq foydali sinflarga ega.
Ikkita asosiy komponent mavjud - kutubxonaning yadrosi bo'lgan QtCore va grafik interfeys komponentlarini ifodalovchi QtGui. Keyinchalik ko'rib turganimizdek, yaratilgan loyihada har doim ushbu ikkita komponent mavjud (QtCore majburiy rol o'ynaydigan konsol ilovalari bundan mustasno).
Xo'sh, ehtiyojlarga qarab, ishlab chiquvchilar o'zlarining xohlagan narsalaridan foydalanishlari mumkin. Tarmoq bilan ishlash uchun QtNetwork, o'zingizning Torrent mijozingizni yozing. Video-audio pleerni amalga oshirish uchun QtMultimedia. QtWebEngine ilovangizga toʻlaqonli brauzer mexanizmini oʻrnatish uchun. Va boshqalar.
Shuni ham ta'kidlash kerakki, e'lon qilingan o'zaro faoliyat platformalar funksiyasi haqiqatan ham mavjud. Siz bitta tizimda (Windows, MinGW) ishlab chiqilgan kodingizni olishingiz va uni boshqa tizimning kompilyatori (Linux, GCC) bilan kompilyatsiya qilishingiz va u erda hech qanday qiyinchiliksiz ishlashi mumkin bo'lgan ikkilik faylni olishingiz mumkin. Amaliyot shuni ko'rsatadiki, dastur uchinchi tomon kutubxonalari bilan og'ir yuklanganda maxsus muammolar boshlanadi.
Veb-ishlab chiquvchilar uchun yoqimli bonus dasturni nafaqat C++, balki JavaScript-ga juda o'xshash QML tilida ham ishlab chiqish imkoniyati bo'ladi. Bu mobil ilovalarni tez prototiplash va ishlab chiqishga qaratilgan Qt rivojlanishining maxsus tarmog'i.
Va, albatta, Qt-ning asosiy jihatlaridan biri bu Qt Creator ishlab chiqish muhitidir. Qt-dagi universal va juda qulay ishlab chiqish muhiti, keraksiz funksiyalar bilan ortiqcha yuklanmagan, .