PDA

Просмотр полной версии : Qt - о нем надо знать!


xkor
27.09.2009, 22:14
Набрёл тут на классную вещь, именуется она Qt, классность заключается в том что эта штучка позволяет разрабатывать и компилить программки под любой популярной ОС и при этом даже без этого достоинства ради которого она собсно и разработана является очень удобным средством разработки для С++, по сути это что то вроде С++ Builder'а, только в отличии от него компилятор используется нормальный, а визуальные компоненты хоть и немного сложнее в использовании и менее разнообразны, но намного мощнее и быстрее чем VCL.
В общем очень рекомендую обратить внимание на эту штуковину хотя бы из любопытства.

Выдержка из wiki:
Qt — кросс-платформенный инструментарий разработки ПО на языке программирования C++.
Позволяет запускать написанное с его помощью ПО в большинстве современных операционных систем путём простой компиляции программы для каждой ОС без изменения исходного кода. Включает в себя все основные классы, которые могут потребоваться при разработке прикладного программного обеспечения, начиная от элементов графического интерфейса и заканчивая классами для работы с сетью, базами данных и XML. Qt является полностью объектно-ориентированным, легко расширяемым и поддерживающим технику компонентного программирования.

Qt комплектуется визуальной средой разработки графического интерфейса «Qt Designer», позволяющей создавать диалоги и формы «мышью» (в режиме WYSIWYG). В поставке Qt есть «Qt Linguist» — графическая утилита, позволяющая упростить локализацию и перевод вашей программы на многие языки; и «Qt Assistant» — справочная система Qt, упрощающая работу с документацией по библиотеке, а также позволяющая создавать кросс-платформенную справку для разрабатываемого на основе Qt ПО. Начиная с версии 4.5.0 в комлект Qt включена среда разработки «Qt Creator», которая включает в себя редактор кода, справку, графические средства «Qt Designer» и возможность отладки приложений. «Qt Creator» может использовать GCC или Microsoft VC++ в качестве компилятора и GDB в качестве отладчика. Для Windows версий библиотека комплектуется компилятором, заголовочными и объектными файлами MinGW.

Библиотека разделена на несколько модулей, для четвёртой версии библиотеки это:
* QtCore — классы ядра библиотеки, используемые другими модулями;
* QtGui — компоненты графического интерфейса;
* QtNetwork — набор классов для сетевого программирования. Поддержка различных высокоуровневых протоколов может меняться от версии к версии. В версии 4.2.x присутствуют классы для работы с протоколами FTP и HTTP. Для работы с протоколами TCP/IP предназначены такие классы, как QTcpServer, QTcpSocket для TCP и 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.

destructor
27.09.2009, 23:00
ну она какбы платная?

Добавлено через 32 секунды
а так да, штука зачотная

xkor
27.09.2009, 23:56
destructor, она начиная с 4й версии платная для платных программ и бесплатная для бесплатных программ, помойму очень правильная политика

GoldFinch
28.09.2009, 00:24
тогда не мешало бы и с дельфи на С++ перейти...

xkor
28.09.2009, 00:48
GoldFinch, вот я как раз этим занимаюсь), пока пытаюсь привыкнуть к тому что регистр в именах имеет значение...

nezabudkin
28.09.2009, 00:51
Для таких нужд есть JAVA, и чего людям не имется?

xkor
28.09.2009, 01:42
nezabudkin, во первых ява это виртуальная машина -> отсюда быстродействие ещё то, во вторых реализацию GUI на java я слышал тормознутые (ну и пару прог написаных на яве смотрел, действительно тормознутые), короче уступает сильно ява...

ЗЫ кстати Qt есть и для явы, в такой комбинации наверно тормозов меньше
ЗЗЫ ну и наконец, ява программу сложнее защитить от взлома...

Jes
28.09.2009, 13:08
GoldFinch, вот я как раз этим занимаюсь), пока пытаюсь привыкнуть к тому что регистр в именах имеет значение...

C++ рулит :) - но регистр это мелочи
пишу проект на джаваскрипте и досих пор незнаю чуствительна она к регистру или нет :) -
старая версия http://lt.rv.ua/portal-dev
test
test
и прямиком в 1С доступ

destructor
28.09.2009, 16:24
destructor, она начиная с 4й версии платная для платных программ и бесплатная для бесплатных программ, помойму очень правильная политика
типа вкусить запретный плод?
это все от лукавого, православен только чистый апи.

GoldFinch
28.09.2009, 19:40
Jes, офигенный интерфейс, я было сначала подумал что это какой-нить XUL %)

javascript хороший язык, с массой замечательных возможностей, но это совсем не java

-----------------

Для GUI скорость обычно не важна, а qt для С++, это попытка сделать хоть какое-то нормальное кроссплатформенное средство для создания интерфейсов. Никогда qt не юзал, хз как оно получилось)

Сейчас все идет к тому, что повсюду внедряется .NET, в висте и семерке он встроенный, есть попытка перенести его в никсы (Mono)
Единственное для него ограничение - это XP где встроенного дотнета нет, но это года на 2-3. Потом шарпы станут реальным конкурентом джаве на всех платформах, а С++ с его нативным кодом будет не так уж и нужен, т.к. везде будет стоять .NET.
Единственный способ остаться популярным языком для С++ - это новый стандарт, который тоже выйдет через год-два, но это никак не относится к qt. Майкрософтовский WPF (GUI для .NET) во многом лучше qt, а относительное неудобство .NET - дело времени.

Это все к тому, что С++ хорошо, но С++ ради QT или GUI вообще - это бессмысленно.

xkor
28.09.2009, 20:42
GoldFinch, ну вот пока что mono + monodevelop значительно неудобнее Qt Creator и поддержка Window Forms там идёт как дополнительная и не особо релизованная фишка ибо Window Forms не входит в стандарт .NET...

Хотя в целом ты наверное прав...

Jes
28.09.2009, 22:49
та фреймворки повсюду - куда не плюнь (Java .NET Qt Phyton wxWidgets) - занимают кучу места в системе - требуют обновления и.т.п
моя приблуда на wxWidgets занимала бы 30Мб фреймворк и екзешник на 400кб если не использовал прикомпелированых библиотек
а на .NET я бы ставку не делал - никто не сделает ее кросплатформенной - потомучто повторить все глюки майкрософта нереально

Добавлено через 6 минут
GoldFinch, да и ты должен знать что есть С++ clr - и это совсем не С++ а просто надстройка над дотнетом

Добавлено через 1 минуту
советую зыркнуть соды http://www.langpop.com/

Argot
29.09.2009, 11:17
xkor, советую почитать про монстра "Boost"

WhiteFlame
22.11.2009, 23:00
Профессионально программирую на QT уже лет 5. Эта библиотека довольно логична и проста в изучении и понимании, программировать на QT вобщем-то не сложно и довольно приятно. Но если рассматривать только Винды, то смысла программить на QT нет, т.к. та же MFC с WinAPI дает намного больше простора. QT незаменима в nix-системах сейчас, даже просто из-за того, что на ней можно довольно быстро строить полноценный GUI. Ну и, как выше было сказано, кому нужна кроссплатформенность, то QT незаменима.