среда, 28 сентября 2011 г.

QML - жОсткий приход

Всегда в написании программ меня убивал этап разработки интерфейса. Мучительный процесс постановки кнопочек, панелек, скроллеров - был кропотливым и занудным.

И самое противное, что результат не нравился. А если решалось сделать какой-то красивый эффект, его приходилось писать ручками. В итоге мало того что это отнимало кучу времени, так еще и было не красиво.

Причем все это осложнялось тем что дизайнерский прогресс не стоял на месте, приложения выпускаемые крупными производителями становились все красивее и красивее.

В общем чтобы не комплексовать Я убедил себя в том, что красота и функциональность приложения не совместима. И с тех пор начал отдавать предпочтение участию в разработке исследовательских или аппаратных продуктов, где на первом месте была быстрая реализация.

Пока около 3-х месяцев назад мне попалась книга Джеффа Раскина "Интерфейс: новые направления в проектировании компьютерных систем (fb2)" которая перевернула мое отношение к разработке ПО. Где было описано много интересных и умных вещей и в частности, что современные среды разработки не приспособлены для создания действительно удобных и одновременно функциональных программ.

И Я начал искать.

Сначала были перепробована куча сторонних визуальных компонентов для Delphi, кстати попадались и достаточно симпатичные типа TMS Software.
Но внутренне ощущал что это все - не то. Программисты поймут степень моего отчаянья Я даже пытался ставить Adobe Flex Builder и писать на Flash CS3. Мне уже казалось, что только там можно сделать действительно красивый и удобный интерфейс под любую задачу.

Пока мне на попался Qt, а точнее QML. Не то что Я про него до этого не слышал про Qt SDK. Слышал - даже ставил. Но посчитал что это - просто нашлепка на VisualStudio, поставил, и особо не разобравшись стер. Сейчас Я понял что это был QtDesigner.
Не знаю что меня побудило поставить QT снова , но теперь это была версия 4.7 и QTCreator.

Начав разбираться с примерами Я сразу понял - ОНО! или ОН :)
Я хочу и буду писать в этой среде на этом языке.

Я не буду перечислять все обещанные плюшки их можно найти на сайте QT

Перейду сразу к проблемам.

Первая и основная проблема с которой Я столкнулся - это распространение приложений на QML.

Берем стартовое приложение Hello World
(Файл->Новое приложение или файл->Приложение QT Quick)

Чтобы поставить его на другой компьютер без установленных библиотек QT Вам надо либо:
1) надо провести процедуру компиляции библиотек QT в статическом режиме (но пропадет ряд интересных возможностей и функций типа WebKit)
2) Перенести на другой компьютер требуемые dll библиотеки.

Для голого приложения с окошком и надписью по центру "Hello World", откомпилированного в Mingw в режиме Release это: (да MINGW можно поставить из инсталятора QT, а потом с радостью стереть Visual Studio)

libgcc_s_dw2-1.dll
mingwm10.dll
QtCore4.dll
QtDeclarative4.dll
QtGui4.dll
QtNetwork4.dll
QtScript4.dll
QtSql4.dll
QtXmlPatterns4.dll

Хотя файл получился всего 70кБ - весь дистрибутив весит 23 Мб в сжатом виде 6Мб (7zip) и это минимальный список дополнительные DLL придется обнаруживать с помощью программы
Dependecywalker - http://www.dependencywalker.com/
Если планируете использовать Webkit то еще потребуются DLL из папки plugins. Которые как я понял Dependencywalker не отслеживает.

В частности программу Minehunt (минер) мне перенести на другой компьютер так и не удалось. Приложение открывается, появляется пустое окно без каких либо элементов. У кого получилось отпишите плиз в чем подвох.

Никакого набора типа QML UI Runtime пока производитель не создал. Вообще такое ощущение, что Nokia прикупившая Trolltech(фирму создателя QT) экспансией в сектор ПО для разработки софта не озабочена, и первое что ее волнует это впаривание кирпичей с Symbian-ом.

Также ясен явный игнорирования сегмента Non-Symbian (Windows CE и Windows Phone). Ведь если Nokia сделает класную среду для разработки под эти платформы ее смартфоны покупать никто не будет. Классичиский пример, когда корпорация в интересах сиюминутной выгоды акционеров тормозит развитие отрасли (и возможно человечества) в целом.

Чей-то Я разворчался.

В общем, для полного счастья Qt не хватает бесплатной системы легкой дистрибуции приложений для любых платформ.

Есть платный BitRock InstallBuilder Enterprise (700$ за лицензию) но там все равно надо ручками указывать какие DLL надо включить в дистрибутив.

UPD:
Второй недостаток который Я надеюсь скоро разрешится , это утечки памяти в QtCreator. Периодически во время открытия(закрытия) второго-третьего проекта(очень удобно кстати при обучении) QtCreator начинает жрать память, от чего Windows начинает дико тупить пытаясь выгружать ее содержимое в SWAP-файлы.

Всем удачи и легкого кода.


1 комментарий: