Обновить
5.61

Qt *

Кроссплатформенный инструментарий разработки ПО

Сначала показывать
Порог рейтинга
Уровень сложности

Пишем виджет рабочего стола под Maemo5 на Qt. Часть первая

Время на прочтение9 мин
Количество просмотров2.8K
Доброго времени суток хабрачеловек. Продолжаю писать статьи о N900. На этот раз адресую ее разработчикам. И не только разработчикам для N900 а всем разработчикам вообще.
Адресую всем разработчикам, так как возникает достаточно много споров о том, что для N900 писать не перспективно. По крайней мере у меня сложилось такое впечатление, после прочтения комментариев в обсуждениях моей предыдущей статьи. Вот в этой статье я попытаюсь показать что это не так.
image
В этой и следующей статьях я продемонстрирую создание приложения для N900 на Qt. И это не простое приложение, а виджет рабочего стола. Исходными данными будут:
  • отсутствие знаний Hildon и GTK;
  • отсутствие специфичных знаний о мобильных платформах вообще;
  • небольшие знания разработки настольных приложений на Qt/С++ или на любом другом языке (в этом случае придется потратить немного больше времени за чтением Qt-документации);
  • немножко усидчивости и заинтересованности(хоть это и самый последний пункт, но совершенно очевидно, что он самый важный).

Таким образом я намереваюсь продемонстрировать, что создание приложений на Qt действительно не требует знаний специфики платформы в подавляющем большинстве случаев. И если приложение использует только Qt API, то оно является абсолютно переносимым между официально поддерживаемыми платформами.
Инструкции и результаты под катом.

Nokia Remote Compiler

Время на прочтение2 мин
Количество просмотров1.3K
Хотелось бы представить небольшой обзор новой экспериментальной возможности, доступной в недавно вышедшем Nokia Qt SDK. Эта новая возможность позволяет использовать build серверы Nokia для сборки софта.
Эта возможность дает независимость от установленного в системе тулчейна, он вообще может быть не установлен. Соответственно таким образом можно легко собирать Symbian приложения в Линуксе или Макоси, а Maemo приложения в Виндовсе.
Читать дальше →

Qt Creator 2.0 + Qt SDK 1.0

Время на прочтение1 мин
Количество просмотров1.1K
Вышел неконец-то QtCreator 2.0, доступный как в составе Nokia Qt SDK 1.0, так и отдельно.

Судя по новостям, основной упор на разработку под Symbian и MeeGo. Полный changelog для Qt Creator.

Также, обновился до версии 1.0.1 API для разработки под мобильные платформы Qt Mobility.

Qt 4.7.0 Tech preview & QtCreator 2.0 alpha

Время на прочтение2 мин
Количество просмотров1K
Сегодня вышел Qt 4.7.0 Tech preview, предварительная версия для людей желающих как можно скорее ознакомиться с новшествами Qt (такими как Qt Quick), Окончательный же релиз Qt 4.7.0 планируется на середину этого года.
Основные нововведения

Разработка в QtCreator для Maemo SDK

Время на прочтение3 мин
Количество просмотров1.9K
Некоторое время назад вышел Qt4.6.2 для Maemo. Под катом ожидается инструкция как поставить SDK в Linux Debian и настроить среду для разработки на Qt (на основе QtCreator).
и где?

Собираем установочные пакеты из Qt проектов по-взрослому

Время на прочтение21 мин
Количество просмотров23K
Методом проб и ошибок я изобрел очередной велосипед, о котором и собираюсь рассказать Вам ниже.Речь пойдет о сборке пакетов из проектов Qt для Debian и Rpm based систем, Windows из под Ubuntu/Debian. В принципе метод весьма прост, поэтому, думаю, что при небольших изменениях он подойдет и для rpb based дистрибтивов, а для Windows систем потребуется установка cygwin.Кроме того эта тема очень мало обсуждается в интернете, хотя я бы не назвал сборку кроссплатформенных приложений в инсталяционные пакеты простой задачей.Кому будет интересен данный материал:
  • в первую очередь начинающим разработчикам Qt, которые хотят распространять свои приложения в удобном для пользователей виде;
  • разработчикам, использующих другие языки программирования (при небольших изменениях можно получить.
У меня есть уверенность в том, что все действия, описанные ниже, можно было бы сделать скриптом make, но и текущий вариант тоже неплох и имеет право на существование.Также, если Вы используете любой другой способ для автоматической сборки проектов, опишите его пожалуйста. Хотелось бы собрать в итоге как можно больше информации по этой теме.
Читать дальше →

Тестирование мультипоточности в Symbian

Время на прочтение5 мин
Количество просмотров962
Недавно мы ставили SDK для разработки под Qt for Symbian на Linux. Теперь пришло время что-нибудь написать на нем.
Сейчас практически везде используются многопоточные архитектуры для выполнения каких-либо фоновых расчетов в то время как пользователь использует UI.
Давайте разберемся, насколько это эффективно при разработке под Symbian.
А давайте!

С выходом Qt 4.6.2, Deploy приложений на Symbian стал «умнее»

Время на прочтение1 мин
Количество просмотров1.3K
Как я писал раньше, вышел Qt 4.6.2 который принес официально Qt на Maemo. Но Symbian не остался без внимания. Анонсирован новый инструмент — Nokia Smart Installer.
Основная фишка этой полезной тулзы в том, что автоматически проверяет нужные зависимости (Qt, QtWebkit, Open C), и если они не установлены, то устанавливает их сам со стандартного репозитория. Теперь не нужно тянуть с собой Qt и приложение станет намного тоньше.

По факту — это что-то вроде apt-get для Symbian. Есть мысли, что этот инструмент будет не только для Qt зависимостей использоваться, а будет как раз реализацией менеджера пакетов под Symbian.

image

Под катом инструкция по эксплуатации.

Читать дальше →

Вышел официальный релиз Qt 4.6.2 для Maemo

Время на прочтение1 мин
Количество просмотров999
Наконец дождались!!! Вышел официально поддерживаемый пакет Qt для Maemo с кучей исправлений.
Что это значит ???
Теперь можно официально разрабатывать приложения используя Qt. Причем интеграция с Maemo улучшилась и были исправлены многи ошибки и недочеты.

Вот видео-демонстрация:


qt.nokia.com/products/platform/maemo — ссылка на официальную страницу проекта.

Под катом подробности.
Читать дальше →

Сериализация в Qt через использование MetaObject

Время на прочтение4 мин
Количество просмотров12K

Предыстория


Собственно для чего такое могло бы понадобиться? Ведь C++ и так предоставляет достаточно гибкие возможности при сериализации в поток. Однако у меня стояла задача максимально универсализировать процесс сериализации/десериализации для многократного использования в проектах.

Итак, было надо организовать как можно более гибкую систему (де)сериалиации в Qt, так чтобы можно было
  1. либо отнаследовавшись от базового класса и расширив его
  2. либо имея отдельный класс-сериализатор
иметь возможность одной командой отправить поток данные из объекта.

При этом каким-либо образом должна была быть обеспечена возможность указывать какие данные в объекте подлежат сериализации, а какие можно (и нужно) «проскипать». Аналогично должна была быть выполнена возможность при десериализации правильно установить данные и связанные с ними зависимые величины внутри объекта.
Читать дальше →

Небольшой demo клиент vkontakte на QML

Время на прочтение1 мин
Количество просмотров3.7K

Недавно я уже рассказывал о новом языке разметки, теперь же мне хотелось бы показать небольшой пример того, что можно с помощью этих инструментов сделать. В качестве демонстрации я решил написать крошечный клиент для популярной в рунете сети vkontakte.
Данный клиент взаимодействует с контактом через userapi, умеет отображать список пользователей, принимать и отправлять сообщения, отображать пользователей, от которых есть непрочитанные сообщения, а также искать нужных людей среди френдленты по имени и фамилии: в общем самый минимум, хотя делает он это весьма красиво.
Примечателен клиент тем, что здесь нет ни единой строчки на C++, всё сделано средствами qml и javascript.
Несколько скриншотов и ссылки для скачивания

Библиотека Qwt: как построить график функции на плоскости?

Время на прочтение8 мин
Количество просмотров38K
Скриншот простейшей программы, демонстрирующей использование виджетов Qwt
Уже пять лет я не пишу приложения с GUI, потому предложение зав. кафедрой подготовить для его лекции программу, строящую некие графики, поначалу меня несколько расстроило.

Как настоящий программист я решил найти самый легкий (и полезный для саморазвития) путь.
А именно, это задание оказалось хорошим поводом для того, чтобы познакомиться с Qt и библиотекой Qwt. Заодно я узнал, что приложения с GUI, оказываются, могут быть кроссплатформенными, а их код не менее элегантным, чем у приложений с «интерфейсом в стиле Unix™».

Итак, Qwt — библиотека виджетов для программирования приложений, имеющих техническую направленность. Она содержит набор виджетов, представляющих собой всевозможные слайдеры и дисковые «номеронабиратели», виджеты для построение гистограмм. Но здесь я расскажу, как Qwt применить для построения самых обычных двумерных графиков функций вида y = f(x).

Дальше в данной заметке
  • приводится ссылка на исходный код моего простейшего примера (+ исполняемые файлы) и инструкция по его компиляции;
  • рассказывается, как же в этом примере всё устроено;
  • для новичков описывается компиляция и установка Qwt.

Читать дальше →

Работаем с моделями в QML

Время на прочтение9 мин
Количество просмотров8.9K

В продолжении предыдущего поста, хочется рассказать ещё немного о новой технологии от Qt Software и Nokia. Напомню, что QML — это новый язык описания пользовательского интерфейса, призванный упростить разработку современных приложений и наполнить их движением.
В этой статье мне хотелось бы немного рассказать о том, как в QML работает парадигма MVC
Читать дальше →

Ближайшие события

Url to PDF. Легко и без проблем

Время на прочтение1 мин
Количество просмотров6.3K
Всем здравствовать.
Давеча был замечен мною интересный пост про замечательный сервис с говорящим адресом: pdfmyurl.com
И родилась мысль написать об альтернативном, более интересном способе (особенно интересном для программистов, энтузиастов и просто любящих консоль людей). Точнее, о проекте, позволяющим делать то же самое, не используя сторонний сервис.
Что же за проект?

Первые шаги с QML

Время на прочтение6 мин
Количество просмотров26K
QML — это новый язык разметки для создания пользовательских интерфейсов. Его основная задача — обеспечить возможность простого и быстрого создания приложений с красивым, анимированным интерфейсом.
Не так давно вышла публичная версия. Это означает, что API в целом стабилизировался, и версию можно смело тестировать и использовать.
Declarative UI планируется включить в релиз Qt 4.7, а пока можно найти все необходимые файлы и инструкции по установке на ftp троллей.
В данной статье мне хотелось бы показать, как можно использовать С++ объекты (QObject) в qml.

Начнем

Мои первые собственные доработки Qt-creator'a

Время на прочтение1 мин
Количество просмотров2.4K
Всем привет. Пару дней назад я начал немного «похачивать» Qt-creator. Чтобы понять в общих чертах внутренности прилось потратить вечер. Еще один вечер ушел чтобы понять как реализовать эту фичу. Ну и в конечном итоге реализация заняла около часа.

Смысл этой фичи заключается в том, что теперь можно с помощью соотвественного переключателя соеденить деревья исходных файлов и заголовчных файлов. Мне было неудобно иметь два дерева — одно для заголовочных файлов — другое для исходных, и это сподвинуло меня реализовать эту маленьку переделку.

Результаты можно посмотреть в моем «merge request» на gitorious'е .

Вот небольшая видео-демка, демонстрирующая мою фичу.


Я поменял класс FolderNode, теперь в нем есть свойство FileType contentType(). Это свойство определяет тип содержимого папки (исходники, заголовочные файлы, ресурси и тд.). Еще я добавил свойство excludeFolderType в FlatMode. Это свойство служит для того, чтоб исключить все папки, у которых контент соостветсвующего типа, из модели со всеми наследниками.

Зачем мне это было нужно.
1. Хотелось понять как устроен Qt-creator.
2. Повысить свои навыки (поучится на чужом коде).
3. Помочь сделать Qt-creator лучше.

Дальше планирую реализовать еще парочку небольших улучшений:
1. Панель файловой системы сделать древовидной.
2. Состояние файла в проекте в системе контроля версий.

P.S: Это был мой первый опыт работы с git и gitorious.
Если кому нибудь будет непонятно как «контрибутить» свой код — обращайтесь, с радостью все расскажу.
UPD: как всегда английскую версию можно найти на моем блоге

Разработка на Qt для Symbian S60 официально доступна

Время на прочтение2 мин
Количество просмотров4.9K
Очень долго ждал официального релиза Qt 4.6.0, так как Тролли обещали поддержать официально разработку под S60 на Qt. Пока существовал Developer Preview — разработчик мог писать приложения для S60, но не существовало никаких механизмов для предоставления приложений конечному потребителю (то-есть пользователю).
image
image
На момент выхода релиза 4.6.0 обещали эту ситуацию поправить, и в форумах и в переписке тролли отвечали на вопросы касающиеся «deploy»'у (очень не нравится мне русский аналог этого слова: «развертывание» ) приложений на устройства так: «В пред релизе этого нет, ждите официального релиза. Там всё будет!».

Что же изменилось с выходом официального релиза?
Читать дальше →

Приватные слоты в паттерне Pimpl от Qt

Время на прочтение10 мин
Количество просмотров7.8K

Вступление.


Недавно я писал по поводу реализации паттерна Pimpl в библиотеке Qt и призывал людей следовать такому подходу при разработке их собственных бибиотек. Теперь я хочу поговорить о таком понятии, как приватные слоты и тем самым продолжить эту тему. Заключительной статьей на эту тему будет реализация механизма Implicit Sharing и shared d-pointer.

Что это и зачем это нужно.


Приватные слоты — это механизм дополняющий функционал d-указателей. Он позволяет реализовать слоты для приватного класса, даже если он не является наследником от QObject (обычно он им и не является), но для этого публичный класс должен быть наследником от QObject. Тоесть по факту создается некий приватный слот в публичном классе и он непосредственно дергает нужный метод приватного класса.
Зачем это нужно? Ну рассмотрим на примере. Есть класс QAbstractScrollArea. Он просто отображает некий виджет (viewport) и обеспечивает прокрутку. Прокрутка обеспечивается с помощью двух экземпляров класса QScrollBar. Сами эти скролбары он хранит в приватном классе. Теперь проблемма: как подключить сигнал от скроллбара об изменение его позиции с классом QAbstractScrollAreaPrivate, ведь он не является QObject'ом? Сделать его наследником от QObject — лучше не делайте это :-). Можно сделать слот в публичном классе и повесить на него, то в таком случае это не очень красиво — так как наружу выходят слоты от внутренней реализации. Вот ту Qt-шниками был придуман достаточно разумный и элегантный подход — приватные слоты.

Читать дальше →

Что такое Pimpl по версии Qt, и с чем его едят!

Время на прочтение12 мин
Количество просмотров40K

Вступление.



Часто в документации от Qt встречается термин Pimpl. Кроме того, те кто хоть немного копался в исходном коде Qt часто видел такие макросы как: Q_DECLARE_PRIVATE, Q_D. А также встречал так называемые приватные заголовочные файлы, название которых заканчивается на "_p.h".
В этой статье я попробую приоткрыть ширму за всей это структурой.

Pimpl, что это?


Pimpl — Pointer to private implementation. Это одно из названий паттерна программирования. Еще его называют чеширским котом — «Cheshire Cat» (это название мне больше нравится). В чем суть этого паттерна? Основная идея этого паттерна — это вынести все приватные члены класса и, в не которых случаях, функционала в приватный класс.
Отсюда название «чеширский кот» — видно только улыбку, а все остальное остается невидимым, но оно несомненно есть :-) Кто не помнит этого замечательного кота, может обратится к первоисточнику, к книге Льюиса Кэрролла «Алиса в стране чудес». Очень интересная книга, особенно если читать в оригинале.
Что это дает?
Читать дальше →

QML — новый подход к построению GUI

Время на прочтение3 мин
Количество просмотров11K
Традиционно все десктопные приложения пишутся на императивных языках программирования, этот подход прост и понятен, куда проще описать последовательность действий для решения той или иной задачи, нежели поставить задачу в понятной для машины форме, но когда речь заходит о проектировании внешнего вида и поведения, возникают сложности.
Веб дизайнеры же привыкли описывать, как должно выглядеть веб приложение, то есть ставить задачу, а не по пунктам описывать её решение, такой подход называется декларативным, он удобен, но к сожалению в традиционных приложениях до сих пор господствует именно императивный подход. Есть конечно дизайнеры форм, но они лишь позволяют в общих чертах обрисовать внешний вид приложения, но совершенно не способны описать его поведение. Для решения это проблемы в Qt Software был предложен новый проект Declarative User Interface и в рамках него новый язык разметки:

Встречаем QML


Это новый язык разметки, позволяющий описывать не только внешний вид, но и поведение ваших приложений. Он очень прост и обладает json образным синтаксисом, немного сближающим его html5, что думаю очень придется по душе веб-дизайнерам, да и программистам тоже. А в перспективе это наконец позволит полностью разделить внутреннюю логику работы приложения и его внешнее поведение, в результате чего будет наконец решена извечная проблема, когда программист занимается ещё и внешним видом приложения, потому, как дизайнерам слишком сложно было вникнуть в программирование.
Хотите прикоснуться?

Вклад авторов