На данный момент в QML мы можем описать только линейные модели и представления. Также есть вариант использовать VisualDataModel для построения псевдо-деревьев (с изменением текущего rootIndex).
Но иногда не нужно строить большие деревья, где оправдано изменение rootIndex модели, а нужно построить дерево с небольшим ветвлением и с возможностью отображения его целиком.
Ниже описан способ как это сделать.
2010-07-23
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)