Возникла потребность в активном использовании extension'ов к QtScript, причем в js-виде. Как известно, они хранятся в файлах __init__.js, раскиданных по разным папкам внутри папки qtscriptextension. Поменять название файла, содержащего extension, возможности нет (оно зашито в исходниках Qt). Следовательно, в QtCreator мы видим кучу файлов с одинаковым названием (__init__.js), что не очень удобно и совсем не продуктивно. В качестве решения был реализован небольшой плагин, являющийся по сути надстройкой над QmlJSEditor. На его примере и будет рассказано как отнаследоваться от QmlJSEditor, чтобы не потерять имеющийся функционал.
2010-12-14
2010-11-07
QtCreator-XmlTree: Применение цветовых схем к редактору
QtCreator поддерживает кастомизацию цвета и шрифта текста в редакторах (в самом QtCreator это называется Color scheme). Это удобно, клево и все такое. Рассмотрим как добавить эту функциональность к нашему редактору XML.
QtCreator-XmlTree: обработка сохранения в TextEditor
Несомненно, использование готовой инфраструктуры TextEditor дает нам немало плюшек. Но, есть небольшая проблемка. Редактор TextEditor'а у нас является только одной из вкладок, на второй вкладке расположено дерево и вкладки синхронизируются только при переключении между ними. Стандартная функция сохранения в TextEditor'е сохраняет содержимое именно текстового редактора. Следовательно при внесении изменений в дерево и сохранении без переключения в текстовый редактор мы теряем эти изменения. Исправим это досадное недоразумение.
2010-11-01
Сборка Qt-приложений под Symbian: Tips&Tricks
Потребовалось мне тут собрать наш проект под Symbian. Как раз появилась дев-версия 4.7.0 и появилась возможность протестировать на n8. Проект не то чтобы очень большой и замудренный, но в итоге сборка его заняла немало времени. В этой статье собраны все грабли, на которые я наступил.
2010-10-14
Qt DevDays 2010: Среда
Третий день Qt DevDays у меня начался не с самого начала. Семнар про лицензирование я слегка проспал, а на первом раунде технических сессий меня особо ничего не заинтересовало. Поэтому, неспешно подкрепившись, я появился уже на втором раунде сессий.
2010-10-13
2010-10-12
Qt DevDays 2010: Прибытие
Сегодня я таки долетел до Мюнхена (не сказать что это было легко, пересадка в Варшаве без возможности покурить дает о себе знать) и вот я на Qt DevDays. Первым делом регистрация в отеле, потом регистрация на самом евенте и у меня на руках пакет участника, доп. плюшка как сертифицированному разработчику на Qt и вопрос "что делать дальше?".
Эта статья кроме описания первого дня также послужит оглавлением остальным статьям:
Эта статья кроме описания первого дня также послужит оглавлением остальным статьям:
2010-10-03
QtCreator-XmlTree: Добавляем редактор исходников
Редактор xml'я в виде дерева это безусловно удобно, но иногда возникает необходимость подправить его в текстовом виде. Самый логичный вариант добавить в интерфейс две вкладки: дерево и текстовый редактор.
2010-09-28
Flickable и touch-интерфейсы: избавляемся от нежелательного скролла
При работе с Flickable (а если конкретнее, то с ListView) наткнулся на то, что при не очень аккуратном нажатии пальцем на элемент происходит не нажатие, а небольшой скролл. Это портит User eXperience достаточно сильно, так как приходится очень точно целиться в элементы. К сожалению, в Assistant не указано что можно с этим делать, но небольшое курение исходников выявило, что надо просто увеличить значение свойства QApplication::startDragDistance и все сразу же станет как надо. Конечное значение подбирается исходя из размеров экрана (например на HTC Hero это 25 пикселей).
QtCreator-XmlTree: Редактор
Итак, мы создали скелет проекта и теперь нам надо его наполнить. Для начала определимся что нам необходимо отнаследовать для создания своего редактора:
- Core::IEditor
- Core::IFile
- Core::IEditorFactory
Ну и плюс к этому необходимо дописать уже созданного наследника ExtensionSystem::IPlugin и реализовать само дерево для отображения xml.
2010-09-26
QtCreator-XmlTree: Введение
Creator предоставляет достаточно мощную систему плагинов, но к сожалению по ней очень мало информации. Приходится искать все по обрывкам информации в сети и из исходников самого Креатора. Эта статья будет посвящена тому, что надо сделать для разработки своих плагинов. Остальные статьи цикла можно посмотреть в посте-оглавлении по XmlTree.
Плагин XmlTree для QtCreator
Qt Creator на данный момент является достаточно удобным и быстро развивающимся IDE, но в плане поддержки xml есть только возможность подсветить его GenericHighlighter'ом. По этой причине было решено написать плагин, показывающий и позволяющий редактировать xml в виде дерева нод. Этот пост является своеобразным оглавлением всех последующих постов, связанных с разработкой этого плагина.
Сам плагин хранится на Gitorious.
- Введение
- Создание своего редактора
- Добавляем редактор исходников xml
- Корректно обрабатываем сохранение
- Используем цветовые схема из настроек QtCreator
- ............
Сам плагин хранится на Gitorious.
2010-09-17
Qt DevDays 2010
Меньше месяца осталось до DevDays. Сегодня были опубликованы официальные блогбаннеры мероприятия (брать отсюда). Пользуясь случаем размещу один у себя :)
2010-08-26
QtScript: небольшая заметка о маленьких биндингах
Иногда возникают ситуации, когда надо иметь доступ из QtScript'а к уже созданным C++-объектам и их методам, но не хочется ни писать громоздкие биндинги, ни менять сигнатуры методов, преобразуя их у QObject'у. К примеру, у нас есть фабрика, которая возвращает уже созданные объекты, но менять возвращаемые типы на QObject не хочется.
2010-07-23
Использование Tree Model в QML интерфейсах
На данный момент в QML мы можем описать только линейные модели и представления. Также есть вариант использовать VisualDataModel для построения псевдо-деревьев (с изменением текущего rootIndex).
Но иногда не нужно строить большие деревья, где оправдано изменение rootIndex модели, а нужно построить дерево с небольшим ветвлением и с возможностью отображения его целиком.
Ниже описан способ как это сделать.
Но иногда не нужно строить большие деревья, где оправдано изменение rootIndex модели, а нужно построить дерево с небольшим ветвлением и с возможностью отображения его целиком.
Ниже описан способ как это сделать.
2010-07-20
Qt Essentials Exam

В прошедшую пятницу, 16 июля 2010 года, я ездил сдавать экзамен Qt Essentials. На данный момент это единственная доступная сертификация по Qt. Теперь я Nokia Certified Qt Developer.
Сразу говорю, примеров вопросов здесь не будет совсем, так как по этому поводу каждый экзаменуемый подписывает NDA. Все остальное постараюсь осветить максимально подробно.
2010-06-23
Android-lighthouse: вызов Java-методов из C++/Qt-кода
По адресу http://qt.gitorious.org/~taipan/qt/android-lighthouse лежит репозитарий с Qt для Android'а. Проект более менее активно пилится его создателем и на данный момент его вполне уже можно использовать. Однако, там не хватает такой вещи как вызов Java-методов из кода, написанного на C++/Qt. В частности, это очень нужно для работы с GPS. Но. Никто не мешает нам слегка поправить проект и впилить туда нужный нам функционал. Этим и займемся.
Внимание! Все исходники основаны на версии репозитария на момент 23 июня (последний push на текущий момент сделан 14 июня).
Краткий экскурс: JNI
JNI - это коннектор между нативным кодом и кодом на Java. В настоящее время проект заброшен и не поддерживается, несмотря на большое количество багов в нем. Тем не менее, этот коннектор позволяет без проблем обращаться к ява-машине из нативного кода, пусть и делать это приходится очень аккуратно.
Постановка задачи
Работа с андроидом накладывает несколько ограничений:
Второе ограничение похуже и по сути не дает нам просто найти интересующие нас классы из нашего Qt-приложения и работать с ними. Опять же, делать поиск в OnLoad() и позже использовать найденные классы не получится, так как OnLoad() находится в lighthouse и кастомизировать его под каждое приложение не очень хорошо.
Следовательно, нам нужно:
Внимание! Все исходники основаны на версии репозитария на момент 23 июня (последний push на текущий момент сделан 14 июня).
Краткий экскурс: JNI
JNI - это коннектор между нативным кодом и кодом на Java. В настоящее время проект заброшен и не поддерживается, несмотря на большое количество багов в нем. Тем не менее, этот коннектор позволяет без проблем обращаться к ява-машине из нативного кода, пусть и делать это приходится очень аккуратно.
Постановка задачи
Работа с андроидом накладывает несколько ограничений:
- Мы не можем создать еще одну ява-машину, нам надо работать в той же (на процесс разрешена только одна ява-машина)
- ClassLoader для ява-машины в андроиде кастомизирован и не позволяет искать свои классы (системные ищутся и находятся на ура) из любого места отличного от функции OnLoad().
Второе ограничение похуже и по сути не дает нам просто найти интересующие нас классы из нашего Qt-приложения и работать с ними. Опять же, делать поиск в OnLoad() и позже использовать найденные классы не получится, так как OnLoad() находится в lighthouse и кастомизировать его под каждое приложение не очень хорошо.
Следовательно, нам нужно:
- Найти общее решение для вызова своих Java-методов
- Реализовать его
Qt в Ovi Store и кучка релизов
Итак, сегодня переломный день. С сегодняшнего дня разрешено выкладывать в Ovi Store приложения на основе Qt. Но обо всем по порядку.
Qt Creator 2.0
Вышел новый релиз IDE для Qt. К сожалению, в нем отключен Declarative (из-за задержки с Qt 4.7), но это позволило пользователям 4.6 насладиться фунционалом, добавленным после 1.3. А это такие вещи, как улучшенный рефакторинг, измененные настройки, улучшенный парсер pro-файлов и прочее. Всего между 1.3 и 2.0 было около 5000 коммитов. Сам я правда ожидаю появления в git снепшотов 2.1 (обещали к концу этой недели), в котором вернут обратно поддержку Declarative. Сам Creator 2.1 выйдет вместе с Qt 4.7.
Nokia Qt SDK 1.0
Также вышла первая релизная версия SDK для разработок под мобильные платформы Symbian и Maemo. Вышли в релиз версии для Windows и Linux, а для Mac OS X 10.6 пока что есть только бета-версия.
В релиз вошли:
Qt Mobility 1.0.1
В довесок еще вышел небольшой релиз Mobility, который добавляет QtMultimediaKit.
Выход Qt на Ovi Store
И самая главная новость дня. В Ovi Store теперь можно заливать приложения, использующие Qt (пока что для N900, X6, N97 mini, но в дальнейшем список будет расширяться). Кроме того, теперь для регистрации в Ovi не надо быть частью какой-то организации, регистрация разрешена частным лицам. Ну и видимо чтобы добить тех, кто еще не упал в обморок от того что написано выше Nokia запустила бета-режим подписывания приложений для Symbian, который мало того что сокращает станадртный период подписывания вдвое, так еще и делает подпись бесплатной.
Qt Creator 2.0
Вышел новый релиз IDE для Qt. К сожалению, в нем отключен Declarative (из-за задержки с Qt 4.7), но это позволило пользователям 4.6 насладиться фунционалом, добавленным после 1.3. А это такие вещи, как улучшенный рефакторинг, измененные настройки, улучшенный парсер pro-файлов и прочее. Всего между 1.3 и 2.0 было около 5000 коммитов. Сам я правда ожидаю появления в git снепшотов 2.1 (обещали к концу этой недели), в котором вернут обратно поддержку Declarative. Сам Creator 2.1 выйдет вместе с Qt 4.7.
Nokia Qt SDK 1.0
Также вышла первая релизная версия SDK для разработок под мобильные платформы Symbian и Maemo. Вышли в релиз версии для Windows и Linux, а для Mac OS X 10.6 пока что есть только бета-версия.
В релиз вошли:
- Qt Creator 2.0
- Qt Simulator 1.0
- Qt Mobility
- текущая версия MADDE
- пакеты для Symbian
- Smartinstaller для Symbian
- экспериментальная версия Remotecompiler
- документация ко всем компонентам
Qt Mobility 1.0.1
В довесок еще вышел небольшой релиз Mobility, который добавляет QtMultimediaKit.
Выход Qt на Ovi Store
И самая главная новость дня. В Ovi Store теперь можно заливать приложения, использующие Qt (пока что для N900, X6, N97 mini, но в дальнейшем список будет расширяться). Кроме того, теперь для регистрации в Ovi не надо быть частью какой-то организации, регистрация разрешена частным лицам. Ну и видимо чтобы добить тех, кто еще не упал в обморок от того что написано выше Nokia запустила бета-режим подписывания приложений для Symbian, который мало того что сокращает станадртный период подписывания вдвое, так еще и делает подпись бесплатной.
2010-06-11
Qt DeveloperNetwork - объединяем все
Некоторое время назад (а если быть точнее, то 21 мая) я получил доступ на закрытое бета-тестирование сайта http://developer.qt.nokia.com.
Что это?
Этот сайт по сути является попыткой объединить все, что нужно разработчику на Qt. Здесь и форум, и вики, и ссылки на саму библиотеку и дополнения к ней. На данный момент все находится в начальной стадии и многое еще не добавлено или добавлено, но с ошибками :)
Состояние на текущий момент
Сейчас на сайте практически ничего нет, кроме обширного форума о найденных багах и предложенных фичах. Медленно, но верно конечно заполняется и остальной форум и вики. Пока что сайт в самом начале своего пути.
А зачем это нужно, если есть QtCentre, ProgOrgRu, другие сайты на данную тематику?
И ведь действительно зачем? Сейчас есть большое количество различных форумов, блогов и просто сайтов, посвященных разработке на Qt, использованию Qt и просто Qt. Есть даже раздел на Форумах Nokia.
По сути это не просто очередной сайт о Qt. Это попытка сделать единую стартовую точку для поиска информации и общения с другими разработчиками на Qt. Некое место, куда можно будет зайти и начать путь в поисках какого-то недостающего кусочка паззла вашего кода.
Также этот сайт на текущий момент не является чем-то застывшим по функционалу, он активно развивается и учитываются пожелания бета-тестеров. То есть, со временем это будет действительно местом, с которого начинается день каждого qt-разработчика.
Ну и сейчас это место, где активно сидят тролли (не те, которые на луркморье, а бывшие Trolltech). Кроме пожеланий по самому сайту они видят и вопросы и фичреквесты по самой библиотеке и инфраструктуре (например сегодня был поднят вопрос о документации).
А как туда попасть?
Бета-тестирование закрытое, но оставить заявку может любой желающий. Для этого достаточно пройти по ссылке http://qt.nokia.com/qtdn-signup и отметиться там. Со временем, возможно придет инвайт (или просто снимут статус бета-тестирования).
UPD (2010-07-08). Open beta
С 8 июля регистрация открыта для всех желающих.
UPD (2010-07-08). Open beta
С 8 июля регистрация открыта для всех желающих.
О чем этот блог
Итак, это первое сообщение в этом блоге. Здесь я немного расскажу о том что в нем будет и о себе.
О блоге
Посты будут в основном о разработке с использованием C++/Qt. Иногда просто о Qt, иногда просто о C++, иногда вообще не о разработке, а просто об интересных вещах в мире Qt и около него. Посты будут нерегулярные и скорее всего редкие.
Время блога московское, язык постов русский (хотя со временем может появятся и на английском).
Время блога московское, язык постов русский (хотя со временем может появятся и на английском).
Обо мне
Разработчик на C++/Qt, также умею веб на php и java/gwt. В качестве платформы предпочитаю использовать Linux, но в разработке в основном кросс-платформенные проекты.
Подписаться на:
Сообщения (Atom)