Как стать автором
Обновить
1.62

Qt *

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

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

Создаем TimePicker аналогичный стандартному в Harmattan

Время на прочтение5 мин
Количество просмотров3.6K
Этот пост участвует в конкурсе „Умные телефоны за умные посты


Слева на картинке вы можете увидеть, как выглядит TimePicker (компонент настройки времени) в стандартных приложениях MeeGo Harmattan от Nokia. А справа TimePicker из MeeGo Qt Components (Extras), который предлагается разработчикам для использования. Различия на лицо.

Определенно, становится ясно, что существует некая несправедливость, потому что используемый Nokia компонент недоступен разработчикам сторонних приложений, несмотря на то, что он более красив и функционален. Честно говоря, на мой взгляд, это лучший вариант TimePicker'а, который я видел.

Итак, ниже я покажу, как реализовать такой компонент самому, и вы убедитесь, что все относительно просто.
Читать дальше →
Всего голосов 54: ↑42 и ↓12+30
Комментарии4

Связывание модели данных в C++ c представлением в QML на примере карты

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


Этот пост участвует в конкурсе „Умные телефоны за умные посты“.

Попробуем решить следующую задачу: показать в приложении карту с пинами, то есть сделать стандартную функциональность, нужную для любого LBS приложения. Причем, сделать это в парадигме MVC – то есть модель данных и контроллер в C++, а QML занимается только отображением и логикой, связанной с UI. Для карты будем использовать использовать стандартный элемент Map, а заодно разберемся со связыванием модели данных из C++ и QML.
Читать дальше →
Всего голосов 22: ↑11 и ↓110
Комментарии7

QML — больше, чем просто GUI

Время на прочтение10 мин
Количество просмотров19K
Этот пост участвует в конкурсе „Умные телефоны за умные посты“.

Пятница, как известно, — конец рабочей недели, лучшее время для развлечения и игр. А лучшие игры — это те, которые увлекательны, в которых надо немножко подумать, и в которые можно сыграть с друзьями. Одну из таких игр я и решил написать.

Этот пост не является очередным переводом или вольным изложением разнообразных QML Howto и Quick Start. Скорее, это описание подводных камней, с которыми можно столкнуться при написании реального приложения.

Игровое полеКогда Qt Quick/QML только было заявлено, от Нокии звучали слова, что «в перспективе не только пользовательский интерфейс будет писаться на Qt Quick, но и вся логика несложных приложений будет написана на яваскрипте, программистам не потребуется написать ни строчки кода на плюсах». Заявление было ещё более провокационное, чем мой заголовок, и сразу меня заинтересовало: я решил попробовать написать несложную игру без единой строчки кода на плюсах.

Чтобы подогреть интерес, добавлю, что:
  • обычно я код пишу как раз на плюсах
  • я достаточно слабо знаю JS
  • я не умею и ненавижу делать интерфейсы
  • когда-то я попытался сделать эту же игру на честном Qt, но сломался, не выдержав общения с QGraphicsScene и другими интересными классами
  • результат моих трудов можно не только скачать, но и сыграть в них по сети
  • все исходники можно скачать у меня из bazaar или тарболлом.


Об остальном мы узнаем под катом.
Повесть, как я яваскрипт побеждал
Всего голосов 53: ↑42 и ↓11+31
Комментарии13

Разработка приложений для Meego Harmattan

Время на прочтение14 мин
Количество просмотров5.3K
Этот пост участвует в конкурсе „Умные телефоны за умные посты“.

image
В данной статье хотелось бы поделится с Хабрасообществом своим опытом по разработке софта с использованием QtComponents'ов на примере Meego Harmattan'а. Писать мы будем редактор заметок с синхронизацией средствами Ubuntu One.

Читать дальше →
Всего голосов 62: ↑51 и ↓11+40
Комментарии9

Истории

Интеграция приложений Qt в среду Mac OS X (с использованием Cocoa и Objective-C++)

Время на прочтение9 мин
Количество просмотров14K
Доброго всем дня!

Недавно я писал о кастомизации заголовка окна в Mac OS X и получил реквесты написать поподробнее о взаимодействии Qt и Cocoa. Думаю, тему можно немного развернуть и написать об интеграции приложений, написанных с помощью Qt, в среду Mac OS X. Оговорюсь, что используется в данном случае Qt for Cocoa, если возьмёте Qt for Carbon, то и работать придётся только с карбоном. Но он морально устарел, и использовать его стоит только в крайних случаях.

Обычная Qt-программа имеет ряд несостыковок с Apple HIG. Точнее, может иметь, так как не всем программам нужен дополнительный функционал. Например, не любой программе надо иметь бэдж поверх значка в доке, расширять меню дока или выносить/дублировать некоторые функции в маковское меню.

Но что делать, если такой функционал нужен? Если нужно отображать в доке количество уведомлений (а-ля скайп), обрабатывать клик по иконке в доке, добавлять свои пункты меню в док, да ещё и иметь нормальное меню, в общем, сделать так, чтобы программа смотрелась как родная в Mac OS? Что-то из этого можно сделать с помощью штатных или полудокументированных функций Qt, а что-то — только с использованием Cocoa и, соответственно, Objective-C… Что же делать?

Нам поможет Objective-C-plus-plus!
Всего голосов 48: ↑46 и ↓2+44
Комментарии25

Qt Components для десктопа

Время на прочтение6 мин
Количество просмотров15K
Этот пост участвует в конкурсе „Умные телефоны за умные посты“.

Как известно, QML основан на графических примитивах и даже банальные кнопки приходится рисовать из них (прямоугольник, градиент, текст, область мыши, например). Для облегчения процесса создания UI были созданы Qt Components. Они позволяют создавать кнопки, текстовые поля, дропбоксы и прочие контролы для ввода или отображения данных. В официальном релизе сейчас компоненты для
мобильных платформ: Symbian и MeeGo. Но в Qt Labs также есть версия для десктопных платформ, которая (через какое-то время) будет включена в Qt5, как основное средство создания пользовательского интерфейса (как мы помним, в Qt5 на первом месте идет QML, а QtGui уже на втором). При этом компоненты сами подстраиваются под нативный вид операционной системы.

Для того, чтобы показать возможности десктопных компонентов, а заодно обозначить основные проблемы и преимущества их использования, я создал минимальное графическое приложение на классическом QtGui и на компонентах. Нет, не Hello World. Калькулятор. Без реализации расчетов, просто графический интерфейс.



Под катом собраны запуски под 3 операционными системами и некоторые рассуждения на тему.

Читать дальше →
Всего голосов 86: ↑70 и ↓16+54
Комментарии56

Введение в Qt Quick3D

Время на прочтение6 мин
Количество просмотров34K
Этот пост участвует в конкурсе „Умные телефоны за умные посты“
Не так давно фреймворк Qt Quick обзавелся дополнением Qt Quick3D, позволяющим полноценно работать с 3D объектами (поддерживается импорт из 3D Max и Blender), совершать над ними различные трансформации, анимации, применять эффекты, ну и вообще по полной использовать возможности лежащего в основе OpenGL. Работает всё это под Symbian, MeeGo, Windows\Linux\MacOs (ну и вообще везде, где Qt есть). В этом топике мы попробуем технологию «на зуб». Писать что-то сложное и серьёзное не хочется, поэтому мы сделаем хабрахолодильник, из которого по клику будет вылетать НЛО.
Сразу результат:

Читать дальше →
Всего голосов 75: ↑66 и ↓9+57
Комментарии58

Разработка картографических и геолокационных мобильных приложений

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

Этот пост участвует в конкурсе „Умные телефоны за умные посты"


В статье освещены основные моменты при разработке картографических и геолокационных мобильных приложений с использованием QtQuick/QML. Рассматриваемый в статье пример поможет вникнуть в суть и основы использования API модуля Location из QtMobility.
Читать дальше →
Всего голосов 28: ↑11 и ↓17-6
Комментарии12

Введение в разработку картографических и геолокационных мобильных приложений с применением QtMobility.location

Время на прочтение7 мин
Количество просмотров3.3K
Этот пост участвует в конкурсе „Умные телефоны за умные посты

Никогда ранее не приходилось участвовать в разработке картографических и геолокационных мобильных приложений, поэтому эта конкурсная тема мне стала интересна как в плане профессионального роста, так и в плане обычного человеческого любопытства. Я, естественно, подозревал, что QtQuick значительно облегчит мне задачу изучения сабжа, но он в очередной раз приятно удивил элегантной простотой решения задачи.


Речь пойдет о QtMobility.location. Кстати, изображенное на скриншоте приложение содержит менее страницы кода на QML и ни строчки на C++.
Читать дальше →
Всего голосов 33: ↑15 и ↓18-3
Комментарии10

Cmake — собираем переносимые приложения для Mac Os X и Windows

Время на прочтение4 мин
Количество просмотров16K
image
Рано или поздно наступает тот момент, когда приложения из наших лабораторий, полных чудес, вкусных библиотек и красивых фреймворков начинают проситься в большой мир, на компьютеры простых людей, не искушённых в магии. На их компьютерах не то, что не стоят наши новомодные фреймворки и средства разработки, там даже простого компилятора днём с огнем не сыщешь. Не может наше приложение жить без библиотек, которые так редко встречаются в дикой природе, зачахнет оно без них, никогда не видать ему белого света…
Но не всё так печально.
За подробностями под хабракат
Всего голосов 32: ↑31 и ↓1+30
Комментарии15

Клиент-серверный чат, используя сокеты Qt/C++

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

Предисловие


Статья ориентирована в основном на новичков. Целью ее написания является быстрое и максимально подробное описание сокетов, для начального понимания сети и сокетов. В свое время искал подобную, но нужны были подробные примеры. В стандартном примере fortune server/client, который идет с qt очень плохо показывают возможности сокетов.

Итак, сервер умеет:
  • «Слушать» произвольный адрес, порт
  • Авторизовать клиента по имени
  • Отправлять общие, приватные, серверные сообщения
  • Отправлять список пользователей
Клиент умеет подавать соответствующие запросы серверу.

Для понимания это будут Гуи-приложения:

image

В qt существуют классы QTcpSocket и QTcpServer для работы с сокетами. Используя сигналы и слоты, с ними можно работать в неблокирующем (асинхронном режиме). Это значит, если подключение к серверу занимает заметное количество времени, гуи не блокируется, а продолжает обрабатывать события, а когда произойдет подключение (либо ошибка), вызовется определенный слот (в текущем случае подключенный к сигналу connected()).
Читать дальше →
Всего голосов 39: ↑21 и ↓18+3
Комментарии13

DLL HiJacking в Qt-приложениях

Время на прочтение1 мин
Количество просмотров2.8K
В марте 2011 года я писал о DLL HiJacking в VirtualBox. Тогда разработчики сообщили, что проблема не в их продукте, а в Qt, на котором основана их продукция.
Наконец, найдя время, я решил проверить так ли это. Оказалось, что так.

Мной были проверены:


И они оказались уязвимы.


Видео демонстрация уязвимости (видео без звука):
Читать дальше →
Всего голосов 55: ↑53 и ↓2+51
Комментарии12

Создание YouTube-плеера для Nokia N9 на QML

Время на прочтение14 мин
Количество просмотров2K
В процессе изучения YouTube API возникла идея написать YouTube плеер для Nokia N9. При выборе средства реализации выбор пал на набирающий обороты QML. Т.к. QML очень легко интегрируется с JavaScript, то получать фиды YouTube было решено именно в JSON (JavaScript Object Notation) формате. При создании пользовательского интерфейса на QML за основу был взят пример Flickr Mobile из QtSDK. Загруженный из фида список предоставляется пользователю в виде ListView или GridView и при щелке пользователя на выбранном видео оно открывается в установленном по умолчанию видео-плеере.

Далее в статье будет более подробно показано, как это все выглядит и как реализуется.

Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии9

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

Qt и SQLite и вообще, программирование БД в Qt

Время на прочтение9 мин
Количество просмотров153K
Добрый день.

Ниже пойдет речь о том, как использовать SQLite в Qt. Автор постарался как можно подробнее рассматривать программирование баз данных в Qt.

Об этих двух замечательных продуктах можно прочитать следуя приведенным выше ссылкам, а мы будем конкретно рассматривать программирование БД в Qt, в частности, на примере SQLite. Скажу только, что SQLite несколько отличается от «обычных» баз данных, таких как MySQL тем, что «не обладает» клиент-серверной архитектурой. То есть движок БД не является отдельно работающим процессом, с которым взаимодействует программа. SQLite представляет собой библиотеку, с которой компонуется ваша программа и, таким образом, движок становится составной частью программы. То есть представьте вы решили сохранять все данные, с которыми «сталкивается» ваша программа в обычный файл. В один прекрасный день вы решаете сохранять данные в файле, но организовав это с «реляционной» точки зрения. После этого вы поняли, что новая структура файла должна «распознаваться особым образом». С этого, как минимум, следует, что вам нужно предоставить некоторый API, обеспечивающий связь между этим файлом данных с приложением. В общем, следуя логической постановке приведенного сценария у вас рождается система БД, не требующая сервера БД и собственно, клиента. Получается достаточно быстрая по сравнению с «клиент-серверной» БД система, и сама программа упрощается.
Почему я рассматриваю именно SQLite?
Всего голосов 48: ↑43 и ↓5+38
Комментарии57

Просто о Qt. Библиотека контейнеров

Время на прочтение7 мин
Количество просмотров153K
Привет, хабр!

Сегодня я хотел бы рассказать о интересной и полезной фиче. Имя ее — Библиотека контейнеров. Это не одна, а целая группа полезных фич. А их назначение — организация и обработка групп элементов. Звучит интересно, да? Сейчас рассмотрим поближе — добро пожаловать под кат.
Читать дальше →
Всего голосов 38: ↑29 и ↓9+20
Комментарии45

Релиз Qt 4.7.4

Время на прочтение1 мин
Количество просмотров3.3K
Мы рады сообщить релизе Qt 4.7.4 для десктопов. В основном это технический релиз, который содержит исправления ошибок майского релиза Qt 4.7.3.

4.7.4 в настоящее время планируется последним релизом в ветке 4.7. Работа будет продолжена в 4.8, бета уже была выпущена, Release Candidate будет доступен в ближайшее время.
Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии2

Релиз Qt Creator 2.3.0

Время на прочтение1 мин
Количество просмотров1.5K
image
Мы рады сообщить сегодня о выпуске нового релизе Qt Creator 2.3.0. Релиз включает множество как мелких, так и крупных улучшений для разработчиков. Так как вы, возможно, не следили за пререлизами, повторю некоторые из наиболее важных изменений:
Читать дальше →
Всего голосов 36: ↑33 и ↓3+30
Комментарии11

Релиз Qt SDK v1.1.3

Время на прочтение2 мин
Количество просмотров2.5K
Мы рады сообщить об обновлении для Qt SDK до версии 1.1.3.

В этой версии довольно много обновлений, происходящих отчасти просто из-за изменений во внутренностях SDK, но есть также функциональные и качественные изменения. Вот основные из них:
Читать дальше →
Всего голосов 17: ↑13 и ↓4+9
Комментарии5

Трюки с моделями в Qt

Время на прочтение5 мин
Количество просмотров40K
Всем привет!
В этой небольшой статье я научу вас, одному интересному трюку с моделями, который можно реализовать с помощью MVC фреймворка Qt.

Исходные данные для трюка.


Двухуровневая модель дерева:
|Parent 1
-----Child 1
-----Child N
|Parent N
-----Child 1
-----Child N


Модель списка:
Item1
Item2
Item3


В результате трюка мы получим модель объединяющую две вышеприведенные модели:
|Parent 1
------Child 1
------Child N
|Parent N
------Child 1
------Child N
|Item1
|Item2
|Item3


Приступим к реализации.


И так как же это сделать? Я думаю вы уже догадались что сделать это можно прибегнув к помощи QAbstractProxyModel. А вот и нет! К сожалению стандартный класс QAbstractProxyModel может преобразовать лишь одну исходную модель (что тоже неплохо). Поэтому мы напишем свою ModelJoinerProxy, которая будет компоновать наши две исходные модели в одно целое.
И так приступим:

Читать дальше →
Всего голосов 23: ↑17 и ↓6+11
Комментарии20

Qt Creator 2.3 и Remote Linux Deploy

Время на прочтение7 мин
Количество просмотров15K
В очередной раз на хабре осталась незамеченной новость, которая пробежала в блоге Qt Labs и известила о выходе Qt Creator 2.3. Если вскользь просмотреть список изменений, то как обычно можно увидеть кучу прикольных плюшек, одна из которых заинтересовала меня неимоверно. А именно — развёртывание и отладка приложения на удалённой Linux-машине, при помощи ssh, прямиком из среды разработки.
Читать дальше →
Всего голосов 40: ↑39 и ↓1+38
Комментарии22

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

Работа

QT разработчик
8 вакансий