Qt
Тип | Widget toolkit |
---|---|
Автори | Haavard Nordd і Eirik Chambe-Engd |
Розробники | Qt Group |
Стабільний випуск | 6.6.2 (14 лютого 2024 ) |
Операційна система | крос-платформова |
Мова програмування | C++ |
Ліцензія | GPLv3 LGPLv3[1] Q Public License власницька |
Онлайн-документація | doc.qt.io |
Репозиторій | code.qt.io/cgit/qt/qtbase.git/ |
Вебсайт | qt.io |
Qt (варіант вимови від розробників cute — к'ют[2]) — крос-платформовий інструментарій розробки програмного забезпечення (ПЗ) мовою програмування C++. Дозволяє запускати написане за його допомогою ПЗ на більшості сучасних операційних систем (ОС), просто компілюючи текст програми для кожної операційної системи без зміни початкового коду. Містить всі основні класи, які можуть бути потрібні для розробки прикладного програмного забезпечення, починаючи з елементів графічного інтерфейсу й закінчуючи класами для роботи з мережею, базами даних, OpenGL, SVG і XML. Бібліотека дозволяє керувати потоками, працювати з мережею та забезпечує крос-платформовий доступ до файлів.
Qt також може бути використаним у багатьох інших мовах програмування: Ada (QtAda)[3], C# (Qyoto/Kimono)[4], Java (Qt Jambi)[5], Qt Jambi, Node.js[6], Pascal, Perl, PHP (PHP-Qt), Ruby (QtRuby), та Python (PyQt,PySide).
Гаавард Норд та Айрік Чемб-Інг почали розробку Qt у 1991 році, 3 роками пізніше було створено компанію Quasar Technologies, яка згодом була перейменована в Troll Tech, а потім — в Trolltech.
Назва Qt з'явилася, бо літера «Q» добре виглядала в Гаавардівському Emacs, а «t» позначало toolkit.
Nokia, придбавши Trolltech ASA 17 червня 2008 р., змінила його назву спершу на Qt Software, потім — на Qt Development Frameworks. Відтоді Nokia сфокусувалася на розвитку Qt, щоб зробити його основною платформою для кожного свого мобільного пристрою, включаючи портування платформи Symbian S60. Версія Nokia Qt SDK 1.0 вийшла 23 червня 2010[7].
Але після укладання стратегічної угоди з Microsoft із відмовою Nokia від будь-яких платформ для смартфонів, крім Windows Phone, Nokia втратила інтерес до технологій Qt, бо найбільш поширеними мовами для програмування для Windows Phone були — C# та C++.
У березні 2011 фінська компанія Digia, постачальник ERP-систем та послуг і рішень у галузі мобільних систем і користувацьких інтерфейсів, оголосила про укладення угоди з Nokia про викуп у тої прав на комерційне ліцензування та надання послуг із підтримки розробки з використанням бібліотеки Qt[8]. Відповідно до запропонованої угоди, близько 3500 компаній, що спеціалізуються на створенні застосунків для десктопів і мобільних пристроїв, перейдуть під заступництво Digia. У вересні 2012 Nokia повністю відмовилася від Qt й Digia купила в неї весь бізнес і програмні технології, пов'язані з Qt[9].
Компанія Nokia до продажу пов'язаного з Qt бізнесу передала управління над проєктом Qt та пов'язані з прийняттям рішень повноваження окремому некомерційному проєкту Qt Project, у якому представники спільноти можуть безпосередньо брати участь у розвитку Qt відповідно до принципів меритократії. В руки Qt Project передано розвиток як експериментальної гілки Qt 5, так і стабільної гілки Qt 4. Крім того, між компанією Nokia і організацією KDE Free Qt Foundation укладено угоду, яка передбачає, що в разі посилення ліцензійної політики, банкрутства Nokia або припинення розвитку Qt проєкт KDE отримує права переліцензувати код Qt під ліцензією BSD або будь-якою іншою відкритою ліцензією та продовжити розробку своїми силами. Ця угода продовжує діяти й при зміні власника Qt[10].
Першим значним кроком у напрямі збільшення відкритості Qt стала зміна на початку 2009 року ліцензії з GPL на LGPL 2.1, що дозволило безперешкодно використовувати Qt в закритих проєктах без необхідності купівлі комерційної ліцензії або відкриття початкових текстів свого продукту під ліцензією GPL. Через кілька місяців був уведений в дію публічний Git-репозиторій, що дозволило стороннім розробникам безперервно відстежувати розвиток Qt (до цього час від часу публікувалися снапшоти коду) і пропонувати свої поліпшення або виправлення. Отже, починаючи з версії 4.5 Qt поширюється за трьома ліцензіями (незалежно від ліцензії, початковий код Qt той самий):
- Qt Commercial — для розробки ПЗ з власницькою ліцензією, що допускає модифікацію самої Qt без розкриття змін;
- GNU GPL — для розробки відкритого програмного забезпечення, що поширюється на умовах GNU GPL;
- GNU LGPL — для розробки ПЗ з власницькою ліцензією, але без внесення змін до Qt.
До версії 4.0 під вільною ліцензією розповсюджувалися лише Qt/Mac, Qt/X11, Qt/Embedded, але, починаючи з 4.0.0 (випущеної в кінці червня 2005), Qt Software «звільнила» й Qt/Windows. Слід зазначити, що існували сторонні вільні версії Qt/Windows <4.0.0, зроблені на основі Qt/X11.
Існують різні версії бібліотеки для таких платформ:
- Qt/X11 — для X Window System (Unix / Linux)
- Qt/Mac — для Mac OS X
- Qt/Windows — для Microsoft Windows
- Qt/Embedded — для вбудованих платформ (PDA, смартфонів…)
- Qt/WinCE — для Windows CE
- Qt/Maemo — для Maemo
- Qt/Symbian — для Symbian
Версія Qt/Embedded розповсюджувалася до недавнього часу. Тепер ця платформа перейменована в Qtopia Core і поширюється як окремий продукт, який забезпечує базову функціональність розробки застосунків усієї лінійки платформ, призначених для вбудовуваних і мобільних пристроїв (КПК, смартфонів тощо).
Qt 4 поширюється в чотирьох редакціях:
- Qt Console — для розробки застосунків без графічного інтерфейсу (мережні демони, консольні застосунки тощо).
- Qt Desktop Light — полегшена версія для розробки застосунків із графічним інтерфейсом, але без підтримки баз даних, мережі та XML.
- Qt Desktop — повна версія, містить усі компоненти.
- Qt Open Source Edition — повна версія для розробки відкритого програмного забезпечення, що поширюється під ліцензією GNU GPL. Не підтримує комерційні компілятори.
Qt 5, який вийшов у грудні 2012, примітний модульною структурою та зміщенням акценту в бік використання для написання застосунків засобів декларативного опису інтерфейсу з визначенням логіки взаємодії з користувачем мовою JavaScript, у той час як застосування C++ позиціонується для реалізації критичних до часу виконання або надмірно складних частин програми, а також для створення нових модульних бекендів для Qt Quick[11]. Незважаючи на багато істотних поліпшень і змін, Qt 5 зберігає базову зворотну сумісність із минулими випусками, підтримує повною мірою засоби для створення Qt-програм мовою C++ і містить майже всі компоненти Qt 4 (припинена підтримка давно застарілих елементів), більшість модулів колишнього Qt Mobility й деякі експериментальні елементи з Qt Labs.
- (Англійська) Qt Centre [Архівовано 14 грудня 2009 у Wayback Machine.]
- (Французька) Qt.Developpez.com [Архівовано 2 вересня 2010 у Wayback Machine.]
- (Французька) Le Site du Zéro [Архівовано 19 серпня 2010 у Wayback Machine.]
- (Італійська) Qt Italia [Архівовано 9 вересня 2010 у Wayback Machine.]
З часу своєї появи в 1996 році комерційна версія бібліотеки Qt лягла в основу тисяч успішних проєктів[12] у всьому світі. Крім того, Qt є фундаментом популярного робочого середовища KDE, що входить до складу багатьох дистрибутивів GNU/Linux.
Серед відомих проєктів особливо треба відзначити:
- програма для IP-телефонії Skype;
- програма для обробки зображень Adobe Photoshop Album;
- мережева карта світу Google Earth.
Відмінна особливість Qt від інших бібліотек — використання Meta Object Compiller (MOC) — попередньої системи обробки початкового коду (загалом, Qt — це бібліотека не для чистого C++, а для його особливого діалекту, з якого й «перекладає» MOC для подальшої компіляції будь-яким стандартним C++ компілятором). MOC дозволяє в багато разів збільшити потужність бібліотек, вводячи такі поняття, як слоти (slots) і сигнали (signals). Qt комплектується графічним середовищем розробки графічного інтерфейсу QTDesigner, що дозволяє створювати діалоги і форми «мишею». Ідеологія створення форм у Qt базується на використанні менеджерів розташування, котрі надають «гумовий» дизайн, при якому розмір і розташування елементів форм визначаються автоматично, що значно прискорює розробку графічного інтерфейсу. В поставці Qt є «Qt Linguist» — могутня графічна утиліта, що дозволяє спростити локалізацію й переклад вашої програми багатьма мовами, та «Qt Assistant» — довідкова система Qt, що спрощує роботу з документацією для бібліотек і дозволяє створювати крос-платформову довідку для ПЗ, розробленого на основі Qt.
Бібліотека розділена на декілька модулів, для четвертої версії бібліотеки — це:
- QtCore — класи ядра бібліотеки для використання іншими модулями;
- QtGui — компоненти графічного інтерфейсу;
- QtNetwork — набір класів для мережевого програмування. Підтримка різних високорівневих протоколів може мінятися від версії до версії. У версії 4.2.x присутні класи для роботи з протоколами FTP і HTTP. Для роботи з протоколами TCP/IP і UDP призначені такі класи як: QTcpServer, QTcpSocket для TPC/IP і QUdpSocket для UDP;
- QtOpenGL — набір класів для роботи з OpenGL;
- QtSql — набір класів для роботи з базами даних мовою структурованих запитів SQL. Основні класи цього модуля у версії 4.2.х: QSqlDatabase — клас для надання з'єднання з базою, для роботи з якоюсь конкретною базою даних, вимагає об'єкт, успадкований від класу QSqlDriver — абстрактного класу, який реалізується для конкретної бази даних і може вимагати для компіляції SDK бази даних. Наприклад, для збірки драйвера під базу даних FireBird/InterBase вимагає .h файли й бібліотеки статичної лінковки, що входять у комплект постачання цієї БД;
- QtScript — класи для роботи з Qt Scripts;
- QtSvg — класи для відображення й роботи зі Scalable Vector Graphics (SVG) даними;
- QtXml — модуль для роботи з XML, підтримується SAX і DOM моделі роботи;
- QtDesigner — класи створення розширень QtDesigner'а для своїх власних віджетів;
- QtUiTools — класи для обробки в застосунку форм Qt Designer;
- QtAssistant — довідкова система;
- Qt3Support — модуль з класами, необхідними для сумісності з бібліотекою Qt версії 3.х.х;
- QtTest — модуль для роботи з UNIT тестами;
- QtWebKit — модуль WebKit, інтегрований в Qt і доступний через її класи;
- QtXmlPatterns — модуль для підтримки XQuery 1.0 і XPath 2.0;
- Phonon — модуль для підтримки відтворення та запису відео й аудіо, як локально, так і з пристроїв із мережі;
- QtCLucene — модуль для підтримки повнотекстового пошуку, застосовується в новій версії Assistant в Qt 4.4;
- ActiveQt — модуль для роботи з ActiveX і COM технологіями для Qt-розробників під Windows. Модуль доступний тільки в комерційній редакції Qt.
Також реалізована технологія WOC — widgets on canvas, за допомогою якої буде реалізована Plasma в KDE 4.1, Буде можливим використовувати віджети бібліотеки Qt прямо в аплетах. Забезпечує розташування віджетів на QGraphicsView із можливістю масштабування й різних графічних ефектів.
Бібліотека використовує власний формат проєкту, що іменується .pro файлом, у якому зібрана інформація про те, які файли будуть скомпільовані, за якими шляхами шукати заголовні файли та багато іншої інформації. Згодом за допомогою утиліти qmake з них виходять makefile для make-утиліти компілятора. Також є можливість роботи за допомогою інтеграторів з такими середовищами програмування, як Microsoft Visual Studio 2003/2005, а зовсім недавно стала доступна інтеграція в Eclipse, для версії бібліотеки 4.х.х.
Розробники на Java можуть використовувати Qt за допомогою фреймворка Qt Jambi від того ж виробника, проте його розробка була припинена 2009 року.
Компоненти, що входять до складу пакета Qt 5.0:
- Базові бібліотеки
- Доповнення
- Qt Xml
- Qt XmlPatterns
- Qt Svg
- Qt Concurrent
- Qt Printsupport
- Qt DBus
- Qt OpenGL
- Qt ActiveQt
- Qt Graphical Effects
- Qt Script
- Qt Declarative
- Qt Image Formats
- Інструменти та супутні проєкту елементи
- Qt Assistant
- Qt Linguist
- Qt Designer
- Qt Translations
- Qt Creator
- Qt Documentation
Починаючи з версії 4.5, до комплекту Qt включене середовище розробки Qt Creator, яке містить у собі редактор коду, довідку, графічні засоби Qt Designer і можливість зневадження застосунків. Qt Creator може використовувати GCC або Microsoft VC++ як компілятори і GDB як зневаджувач. Для Windows-версій бібліотека комплектується компілятором, заголовними й об'єктними файлами MinGW. Qt Creator — середовище розробки, призначене для створення крос-платформових застосунків із використанням бібліотеки Qt. Підтримується розробка як класичних програм мовою C++, так і використання мови QML для визначення сценаріїв, у якій використовується JavaScript, а структура й параметри елементів інтерфейсу задаються CSS-подібними блоками.
Qt комплектується візуальним середовищем розробки графічного інтерфейсу Qt Designer, що дозволяє створювати діалоги й форми мишею (в режимі WYSIWYG). У комплекті постачання Qt є Qt Linguist — графічна утиліта, що дозволяє спростити локалізацію й переклад вашої програми багатьма мовами, та Qt Assistant — довідкова система Qt, що спрощує роботу з документацією для бібліотеки та дозволяє створювати крос-платформову довідку для ПЗ, що розробляється на основі Qt.
Qt Designer — програма, що служить для розробки графічного користувацького інтерфейсу (GUI), використовуючи бібліотеку Qt. Дозволяє створювати форми й діалоги у візуальному режимі (WYSIWYG). Поставляється з бібліотекою Qt й іншими програмами для Qt: Qt Linguist і Qt Assistant.
- ↑ New agreement with the KDE Free Qt Foundation and changes for the open source version. Архів оригіналу за 5 квітня 2016. Процитовано 10 квітня 2016.
- ↑ Interview with Trolltech president Eirik Eng [Архівовано 17 жовтня 2008 у Wayback Machine.] on dot.kde.org
- ↑ QtAda [Архівовано 12 квітня 2009 у Wayback Machine.], Ada 2005 bindings for Qt
- ↑ The Qyoto / Kimono Project [Архівовано 22 жовтня 2008 у Wayback Machine.], a .Net and C# bindings for Qt
- ↑ Qt Jambi, Java bindings for Qt from Trolltech
- ↑ Node-Qt [Архівовано 13 березня 2013 у Wayback Machine.], C++ Qt bindings for Node.js
- ↑ Niels Weber (23 червня 2010). Nokia Qt SDK 1.0 released. Labs.trolltech.com. Архів оригіналу за 10 липня 2012. Процитовано 13 листопада 2011.
- ↑ Компания Digia выкупает бизнес лицензирования и поддержки Qt у Nokia. Архів оригіналу за 19 серпня 2012. Процитовано 16 серпня 2012.
- ↑ Nokia отказывается от разработки Qt и продаёт проект компании Digia. Архів оригіналу за 17 серпня 2012. Процитовано 16 серпня 2012.
- ↑ Nokia перевела Qt на открытую модель разработки и управления проектом. Архів оригіналу за 18 липня 2012. Процитовано 16 серпня 2012.
- ↑ Официально представлен релиз Qt 5.0 [Архівовано 23 грудня 2012 у Wayback Machine.] // opennet.ru 19.12.2012
- ↑ База застосунків, що використовують QT. Архів оригіналу за 31 травня 2009. Процитовано 1 листопада 2008.
- Офіційний сайт компанії Qt Software [Архівовано 2 серпня 2009 у Wayback Machine.]
- Qt Project [Архівовано 8 липня 2013 у Wayback Machine.]
- Документація
- An Introduction to Design Patterns in C++ with Qt4. Excerpts from a Prentice Hall book teaching C++ programming from the ground up, using Qt 4.1
- KDE [Архівовано 21 лютого 2011 у Wayback Machine.]