Kehittäjä |
|
---|---|
Ensimmäinen versio | 1995 |
Viimeinen versio | 6,1 (6. toukokuuta 2021) |
Tallettaa | code.qt.io/cgit/qt/qtbase.git |
Projektin tila | Aktiivinen |
Kirjoitettu | C ++ |
Käyttöjärjestelmä | GNU / Linux , Microsoft Windows , macOS , BSD ( d ) , Android ja iOS |
Ympäristö | GNU / Linux , Windows , Windows CE , Mac OS X , BSD , Unix , Symbian OS , Maemo , Tizen , Genode |
Tyyppi | graafisten rajapintojen luominen |
Lisenssi | GNU GPL v2, GNU LGPL 3 Qt 5.7: stä |
Dokumentointi | doc.qt.io |
Verkkosivusto | www.qt.io |
Qt (lausutaan virallisesti englanniksi söpö ( / kjuːt / ), mutta yleisesti lausutaan QT ( /ˈkjuː.ˈtiː/ )):
Qt sallii vain sen komponentteja käyttävien sovellusten siirrettävyyden yksinkertaisesti kääntäen lähdekoodin uudelleen . Tuetut ympäristöt ovat Unix (mukaan lukien GNU / Linux ), jotka käyttävät X Window System- tai Wayland- grafiikkajärjestelmää , Windows , Mac OS X , Tizen ja myös Genode . Se, että kyseessä on monialustainen ohjelmistokirjasto, houkuttelee suurta määrää ihmisiä, joilla on näin ollen mahdollisuus lähettää ohjelmiaan nykyisissä pääkäyttöjärjestelmissä.
Qt integroi sidonnat yli kymmenelle muulle kielelle kuin C ++, kuten Ada, C #, Java, Python, Ruby, Visual Basic jne.
Qt tunnetaan erityisesti siitä, että se on kehys, johon KDE Plasma -grafiikkaympäristö perustuu , yksi oletusarvoisista työpöytäympäristöistä useille GNU / Linux-jakeluille .
Se on tällä Norja Institute of Technology in Trondheimin että Haavard Nordin ( CEO of Trolltechin ) ja Eirik Chambe-insinööri (puheenjohtaja Trolltechin ) kohtaavat. Vuonna 1988 ruotsalainen yritys tilasi Haavard Nordin kehittämään C ++ - ohjelmistokirjaston graafisen käyttöliittymän hallitsemiseksi . Tämä oli ensimmäinen kerta, kun hän aloitti aiheen esittelemisen. Kaksi vuotta myöhemmin Chambe-Eng: n kanssa he kehittävät monitasoisen sovelluksen ( Unix , Macintosh ja Windows ) ja alkavat vakavasti miettiä yleisen monitasoisen grafiikkakirjaston suunnittelua.
Vuonna 1991 he alkoivat kehittää tätä kirjastoa. Seuraavana vuonna Chambe-Eng ehdotti " signaalien ja lähtöjen" periaatetta , josta tuli Qt: n kulmakivi. Ja vuonna 1993 Qt: n ydin oli valmis ja antoi tietojenkäsittelytieteiden kehittää omia grafiikkakomponenttejaan. Tämän vuoden lopussa Haavard Nord ehdottaa yrityksen perustamista kirjaston markkinoimiseksi.
Quasar Technologies luotiin4. maaliskuuta 1994ja nimettiin uudelleen kuusi kuukautta myöhemmin Troll Techiksi, sitten Trolltechiksi, sitten Qt Softwareiksi ja lopuksi Qt Development Frameworkiksi . Alkut ovat taloudellisesti erityisen vaikeita. Mutta heillä on onni mennä naimisiin: heidän vaimonsa tukevat heitä.
Projektille annettiin nimi Qt, koska merkki Q näytti hyvältä Haavardin Emacs- komentosarjassa , ja t on peräisin Xt Xtoolkitista . Kaikki tämä lausutaan englanniksi söpö , mikä tarkoittaa "söpö". Koska t on pieni kirjain, älä lausu söpöläistä ( /ˈkjuː.ti/ ): se ei ole lyhenne (QT).
Se on sisällä Huhtikuu 1995että Trolltechilla on ensimmäinen asiakas, norjalainen yritys Metis. Ja melkein vuoden ajan hänellä ei ole muuta, mikä tekee yrityksestä taloudellisesti erittäin herkän. Sen toinen asiakas, Euroopan avaruusjärjestö (ESA), ostaa täältä kymmenen lisenssiäMaaliskuu 1996.
26. toukokuuta 1995Qt: n ensimmäinen julkinen versio ilmoitetaan uutisryhmässä comp.os.linux.announce. Ja vuotta myöhemmin versio 0.97, sitten24. syyskuuta 1996 versio 1.0 julkaistaan ja ilmoitetaan muutama päivä myöhemmin.
Vuonna 1997 Matthias Ettrich (jonka Trolltech palkkasi seuraavana vuonna) käynnisti KDE- projektin . Jälkimmäinen tekee päätöksen käyttää Qt: tä peruskirjastona. Se, että tämän suuruusluokan projekti käyttää Qt: tä, on hyvä mainos Trolltechille ja sen kirjastolle. Siitä lähtien Trolltechin ja KDE: n väliset siteet ovat vain vahvistuneet.
Qt: n toinen pääversio julkaistaan vuonna Kesäkuu 1999ja versio sulautettujen järjestelmien , Qt / Embedded , koska tunnetaan Qtopia , julkaistiin vuonna 2000 . Tämä uusin versio on suunniteltu Linuxille ja käyttää sen kehyspuskuria suoraan käymättä läpi X11- ikkunajärjestelmän (joka ei sovellu upotettuihin järjestelmiin).
Qt: n kaksi ensimmäistä pääversiota ovat saatavana vain X11: lle ja Windowsille , Mac OS X: n tueksi tulee versio 3.0, joka julkaistiin vuonna 2001 . Versioon 2.0 verrattuna tämä uusi versio tukee paremmin kansainvälistymistä , Unicodea ja säännöllisiä lausekkeita kuten Perlissä .
28. kesäkuuta 2005, versio 4 on julkaistu ja parantaa erityisesti renderöintimoottoria , jota nyt kutsutaan Arthuriksi , tietojen ja esityksen välinen erotus ja erottaa kirjaston moduuleiksi:
Lisäksi Windows-kaupallisessa versiossa on kaksi muuta moduulia, jotka on liitetty ActiveX : n käyttöön : QAxContainer ja QAxServer .
Qt 4: n kehityksen myötä muut moduulit suunnitellaan:
28. tammikuuta 2008, Nokia julkaisee ystävällisen ostotarjouksen Qt: n ja Trolltechin ostamiseksi . Trolltechista, joka on nimetty uudelleen Qt Softwareiksi , tulee Nokian osasto. Siksi Nokia tekee päätöksen vuonnatammikuu 2009 alentaa mahdollisimman monta estettä Qt: n käyttöönoton helpottamiseksi, jota niiden sisäinen kehitys on sittemmin käyttänyt:
Nokia keskittyy uudelleen Windowsiin, se antaa periksi maaliskuu 2011Qt: n palvelut ja kaupallinen lisenssien hallinta Digialle. 9. elokuuta 2012, se luovuttaa Qt-kehyksen hallinnan kokonaan Digialle 4,9 miljoonalla eurolla (verrattuna 150 miljoonaan vuonna 2008). Digia ilmoittaa haluavansa laajentaa Qt: n integraatiota Androidiin , iOS: ään ja Windows 8: een .
Qt 5.0 julkaistiin 19. joulukuuta 2012. Vaikka merkittävien muutosten merkitseminen monissa pisteissä (QML: n ja JavaScriptin tärkeä rooli graafisten rajapintojen luomisessa Qt Quickin kanssa, erottaminen itsenäisiksi moduuleiksi toimitusten helpottamiseksi, abstraktiokerros portoinnin helpottamiseksi jne.), Siirtyminen Qt5: een ainakin hajottaa yhteensopivuuden lähdetaso. Tällä tavalla vaihtaminen on paljon helpompaa kuin Qt4: lle.
Qt 5.x -versiot käyttävät ohjelman käyttöönottoon tarvittavia laajennuksia .
Qt Quick on Digian kehittämä ja ylläpitämä ilmainen kehys, joka on osa Qt-kirjastoa.Se tarjoaa mahdollisuuden luoda mukautettavia ja dynaamisia käyttöliittymiä sujuvilla siirtymäefekteillä deklaratiivisesti. Tämän tyyppinen dynaaminen käyttöliittymä on yhä yleisempää, erityisesti älypuhelimissa. Qt Quick sisältää deklaratiivisen komentosarjakielen nimeltä QML, joka on verrattavissa Microsoftin WPF- kirjastoon luomaan XAML : ään .
Qt Quick ja QML toimitetaan virallisesti Qt 4.7: stä lähtien ( Qt Creator 2.1: n kanssa).
KDE GUI projekti käyttää Qt-kirjaston alusta alkaen. Mutta menestys tämän ympäristön, jokin osa vapaiden ohjelmistojen yhteisö kritisoi Qt: n lisenssi on oma ja ristiriidassa GPL käyttää KDE . Tämän ongelman ratkaisi Trolltech- yritys, joka asetti Qt: n GNU / Linux- ja UNIX-versiot GNU GPL -lisenssin alle, kun kehitetty sovellus oli myös GNU GPL: n alla. Loppujen lopuksi kaupallinen lisenssi tulee voimaan. Tätä kaksoislisenssipolitiikkaa sovellettiin aluksi vain GNU / Linux ja UNIX -käyttöjärjestelmiin, mutta Qt-version 4.0 jälkeen sitä sovelletaan kaikkiin järjestelmiin.
Kesäkuussa 1998 perustettu KDE Free Qt -säätiö on vastuussa Qt: n saatavuuden varmistamisesta ilmaisten ohjelmistojen kehittämistä varten. Trolltechin kanssa tehdyn sopimuksen mukaan tällä säätiöllä on oikeus jakaa Qt: tä BSD-tyylisen lisenssin nojalla, jos Trolltech lopettaa ilmaisen version kehittämisen useista syistä, mukaan lukien konkurssihakemus . Hankinnan Trolltechin mukaan Nokia on28. tammikuuta 2008ei kyseenalaista kaksoislisenssipolitiikkaa, suomalainen yritys tukee jopa KDE: tä .
18. tammikuuta 2008, Trolltech ilmoittaa, että Qt: n versiot 3 ja 4 ovat tästä päivästä lisenssin GPLv2 ja GPLv3 nojalla. Tämä versionmuutos koskee vain Qt: n ilmaisia versioita. Siksi Qt for Windows -versio 3, joka ei ole ilmainen, ei näe sen käyttöoikeusmuutosta. Tämä muutos on osa KDE: n halua siirtyä myös GPL: n versioon 3 jo käytetyn version 2 lisäksi.
Vuotta myöhemmin 14. tammikuuta 2009, Trolltech ilmoittaa, että Qt 4.5: sta alkaen Qt on saatavana myös LGPL v2.1 -lisenssillä. Tämä uusi lisenssi mahdollistaa siten omien ohjelmistojen kehittämisen ilman, että tarvitsee ostaa kaupallista lisenssiä Qt Development Frameworkilta. Tämän muutoksen, jonka Nokia haluaa varmistaa, että Qt: tä käytetään mahdollisimman monessa projektissa, tekee mahdolliseksi se, että Nokia voi tehdä ilman kaupallisten lisenssien myyntiä, toisin kuin Trolltech, joka ei voisi tehdä ilman tätä tulolähdettä.
Qt API koostuu luokkien nimiä edeltää Q ja jokaisen sanan, joka alkaa isolla kirjaimella (esim :)QLineEdit , tämä on camelcase typografia . Näissä luokissa on usein lueteltu tyyppejä, jotka on ilmoitettu nimiavaruudessa attribuutteina Qt. Puhtaan objektiarkkitehtuurin lisäksi jotkut perustoiminnot toteutetaan makroilla (merkkijono käännettäväksi tr, näyttö vakiolähdössä qDebug…).
Menetelmän nimeämiskäytännöt ovat melko samanlaiset kuin Java: ssa käytetään alempaa kamelin kirjainta , ts. Kaikki sanat lukuun ottamatta ensimmäisiä isoja ja pieniä kirjaimia (ex :) indicatorFollowsStyle(), muuttajia edeltää settoisaalta, kun taas käyttöoikeuden haltijat ottavat yksinkertaisesti attribute (ex :) text()tai aloita isboolean kanssa (ex :) isChecked().
Qt-objektit (ne, jotka perivät QObject) voivat organisoitua puuksi . Siten, kun luokka on instantioitu, voimme määritellä sille pääobjektin. Tämä esineiden järjestäminen puun muodossa helpottaa muistin hallintaa, koska Qt kutsuu rekursiivisesti ennen kaikkien vanhempien hävittäjää ennen vanhemman objektin tuhoutumista.
Tämä käsite esineen puun helpottaa myös debug, jonka soittamalla menetelmiä kuten QObject::dumpObjectTree()ja Object::dumpObjectInfo().
Moc (varten Meta Object kääntäjä ) on esikäsittelijään , joka levitetään ennen kokoamista lähdekoodin Qt ohjelman, tuottaa meta-tietoja , jotka koskevat luokkia, joita käytetään ohjelmassa. Tämän jälkeen Qt käyttää tätä metatietoa sellaisten toimintojen tuottamiseen, joita ei ole saatavana C ++: ssa, kuten signaalit ja aikavälit sekä itsetarkastus .
Tällaisen lisätyökalun käyttö erottaa Qt-ohjelmat tavallisesta C ++ -kielestä. Qt Development Frameworks pitää tätä operaatiota välttämättömänä kompromissina introspektio- ja signalointimekanismien tarjoamiseksi. Kun Qt 1.x julkaistiin, toteutukset malleja C ++ kerääjiä eivät olleet riittävän yhdenmukaisia.
Signaalit ja lähtö ovat tarkkailijan suunnittelumallin toteutus . Ajatuksena on yhdistää esineitä toisiinsa signaalien kautta, jotka välitetään ja vastaanotetaan aikavälillä. Kehittäjän näkökulmasta signaalit esitetään yksinkertaisina lähetysluokan menetelminä , joita ei ole toteutettu. Näitä "menetelmiä" kutsutaan jäljempänä edeltämällä "emit", joka merkitsee signaalin emissiota. Signaaliin kytketty väli on puolestaan vastaanottoluokan menetelmä, jolla on oltava sama allekirjoitus (toisin sanoen samat parametrit kuin signaalilla, johon se on kytketty), mutta toisin kuin signaalit, se on toteutettava. kehittäjä. Tämän toteutuksen koodi edustaa signaalin vastaanoton yhteydessä suoritettavia toimintoja.
MOC on vastuussa signaalien ja aikavälien yhdistämiseen tarvittavan C ++ -koodin luomisesta.
Qt Designer on ohjelmisto, jonka avulla voit luoda Qt-graafisia rajapintoja käyttäjäystävällisessä ympäristössä. Käyttäjä sijoittaa graafisen käyttöliittymän osat ja asettaa niiden ominaisuudet vetämällä ja pudottamalla . GUI-tiedostot on muotoiltu XML-muodossa ja niiden tunniste on .ui .
Käännöksen aikana apuohjelma muuntaa GUI-tiedoston C ++ -luokaksi uic. Kehittäjä voi käyttää tätä luokkaa useilla tavoilla:
Qt, joka halusi olla kannettava kehitysympäristö ja jolla MOC oli välivaihe ennen kokoamis- / linkitysvaihetta , oli tarpeen suunnitella erityinen tuotantomoottori . Näin ohjelma on suunniteltu qmake.
Viimeksi mainittu ottaa syötteenä tiedoston (laajennuksella .pro), joka kuvaa projektia (luettelo lähdetiedostoista, riippuvuuksista, kääntäjälle välitetyistä parametreista jne.) Ja luo alustalle ominaisen projektitiedoston. Täten UNIX- järjestelmissä qmaketuotetaan Makefile, joka sisältää luettelon suoritettavista tiedostoista suoritettavista komennoista, lukuun ottamatta Qt: lle ominaisia vaiheita (C ++ -luokkien luominen, kun suunnitellaan graafista käyttöliittymää Qt Designerin kanssa, C-sukupolvi ++ -koodi signaalien ja aikavälien linkittämiseen, tiedoston lisäämiseen projektiin jne.).
Kehittäjä on tehnyt projektitiedoston olevan erittäin helppo muokata. Se koostuu sarjasta muuttuvia tehtäviä. Tässä esimerkki pienestä projektista:
TARGET = monAppli SOURCES = main.cpp mainwindow.cpp HEADERS = mainwindow.h FORMS = mainwindow.ui QT += sqlNämä ilmoitukset edellyttävät, että suoritettava tiedosto on nimeltään myAppli , annetaan luettelo lähdetiedostoista, otsikoista ja käyttöliittymätiedostoista. Viimeinen rivi ilmoittaa, että projekti vaatii Qt SQL -moduulin .
Qt integroi oman käännösjärjestelmänsä, joka ei periaatteessa ole periaatteessa erilainen kuin gettext- kirjasto . Qt Linguist -oppaan mukaan kansainvälistyminen saavutetaan kolmen tyyppisen ihmisen yhteistyöllä: kehittäjät , projektipäällikkö ja kääntäjät .
Lähdekoodissa kehittäjät kirjoittavat merkkijonot omalla kielellään. Heidän on sallittava näiden merkkijonojen kääntäminen menetelmän ansiosta tr(). Jos lausekkeen merkityksessä on epäselvyyttä, he voivat myös ilmaista kommentteja, joiden tarkoituksena on auttaa kääntäjiä.
Projektipäällikkö ilmoittaa käännöstiedostot (yksi kutakin kieltä kohti) projektitiedostossa. Apuohjelma lupdateetsii lähteistä merkkijonoja kääntääkseen ja synkronoi käännöstiedostot lähteiden kanssa. Käännöstiedostot ovat XML- tiedostoja, joiden tunniste on .ts .
Kääntäjät käyttävät Qt Linguistia käännöstiedostojen täyttämiseen. Kun käännökset ovat valmiit, projektipäällikkö voi koota .ts- tiedostot apuohjelman avulla, lreleasejoka luo binääritiedostot .qm- laajennuksella , jota ohjelma voi käyttää. Nämä tiedostot luetaan ajon aikana, ja niissä olevat merkkijonot korvaavat kehittäjien kirjoittamat.
Kirjasto upottaa erilaisia widget-teemoja, jotka antavat sille hyvän visuaalisen integraation kaikilla alustoilla. Qt-sovelluksilla on siis GNOME- , Mac OS X- ja Windows- työpöytäympäristöissä natiivisovellusten ulkonäkö.
Qt: n avulla voit mukauttaa eri GUI-komponenttien ulkonäköä käyttämällä CSS (CSS) -periaatetta .
Qt Development Framework tarjoaa joukon ilmaisia ohjelmistoja Qt-sovellusten kehittämisen helpottamiseksi:
Vaikka Qt Creator mainostetaankin Qt: n vertailukohtana olevaksi kehitysympäristöksi, Eclipse- ja Visual Studio -kehitysympäristöihin on Qt-moduuleja . Qt: lle on tarkoitettu muita ja Nokialta itsenäisesti kehitettyjä IDE: itä , kuten QDevelop ja Monkey Studio .
Joitakin sidoksia on olemassa, jotta Qt: tä voidaan käyttää muilla kielillä kuin C ++. Täten voidaan käyttää kieliä Ada , C # ja Visual Basic ( Qt # ), D , F # (Qt #), Java ( Qt Jambi ), OCaml , Perl , PHP , Python , Ruby ( QtRuby ) ja Scheme .
Yhä useammat kehittäjät käyttävät Qt: tä, myös suurten yritysten keskuudessa. Näitä ovat: Google , Adobe Systems , Skype tai jopa NASA . Digian sivustolla on luettelo yrityksistä, jotka käyttävät Qt- ja Qt-pohjaisia sovelluksia.
Klassinen " Hello World " eri kielillä: C ++ , Java ( QtJambin kanssa ), Python ( PyQt: n ja PySiden kanssa ) ja C # ( Qyoton kanssa ):
Tutkitaan näitä linjoja.
#include <QApplication> : Sisältää otsikon QApplication, joka tarvitaan luokan käyttämiseen QApplication.
#include <QPushButton>: Sama, mutta luokalle QPushButton.
int main(int argc, char *argv[]) { : Toiminnon käynnistys, mainkun ohjelma käynnistetään.
QApplication app(argc, argv); : Luo objekti QApplication, tämä vaihe on pakollinen, ennen kuin käytät widgettejä ( QWidget).
QPushButton bouton("Hello world!"); : Luo objekti QPushButton(joka on yksi QWidget). Tämä objekti visualisoidaan painikkeella, joka näyttää tekstin "Hello world!".
bouton.show(); : Kutsuu showobjektin toiminnon boutontekemään siitä näkyvän (oletusarvoisesti painike on näkymätön).
return app.exec(); : Kutsuu funktiota execon app, ja palauttaa sen tuloksen. Tämä toiminto toimii, kunnes käyttäjä sulkee kaikki näkyvät ikkunat, tässä tapauksessa, kunnes käyttäjä sulkee vastaavan ikkunan bouton.