Search
Write a publication
Pull to refresh
34
0
Никита Крупенько @BlackRaven86

Программист C++/Qt и QML

Send message

Выпуск фреймворка Qt 5.8

Reading time4 min
Views26K

Сегодня, спустя 7 месяцев с момента предыдущего значительного выпуска, вышла версия 5.8 кроссплатформенного фреймворка Qt.


Qt позволяет разрабатывать приложения при помощи C++ и декларативного языка программирования QML, поддерживает все основные десктопные и мобильные платформы, а также некоторые встраиваемые и имеет открытый исходный код. Существует коммерческая версия Qt, содержащая дополнительные проприетарные модули.


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


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

Выпуск фреймворка Qt 5.7

Reading time4 min
Views33K

Вчера, спустя всего 3 месяца с момента предыдущего значительного выпуска, вышла версия 5.7 кроссплатформенного фреймворка Qt.


Qt позволяет разрабатывать приложения при помощи C++ и декларативного языка программирования QML, поддерживает все основные десктопные и мобильные платформы, а также некоторые встраиваемые и имеет открытый исходный код. Существует коммерческая версия Qt, содержащая дополнительные проприетарные модули.


Новый выпуск принес смену лицензии, открытие кода проприетарных модулей, переход на C++11, стабилизация некоторых экспериментальных модулей, а также новые экспериментальные модули и удаление устаревших.



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

В GOG.com появилась возможность бесплатно перенести игры из Steam

Reading time2 min
Views89K
На днях в сервисе цифровой дистрибуции компьютерных игр и фильмов без DRM GOG.com появилась возможность перенести игры, купленные в Steam в библиотеку GOG.com. После добавления игры не пропадают из Steam, а становятся доступны сразу в двух библиотеках.
Читать дальше →

Model-View в QML. Часть четвертая: C++-модели

Reading time13 min
Views68K

Поскольку основное предназначение QML — это создание интерфейсов, то в соответствии с шаблоном MVC, на нем реализуются представление и контроль. Для реализации же модели, совершенно логично напрашивается C++. Здесь у нас будет гораздо меньше ограничений и мы сможем реализовать модель любой сложности. Кроме того, если значительная часть программы написана на C++ и данные поступают именно оттуда, то лучше всего там же поместить и модель.


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


Во-первых, не будем забывать, что мы пишем не на чистом С++, а с использованием Qt. Такие вещи как parent-child в QObject, implicit sharing для контейнеров, сигналы и слоты, QVariant и многое другое очень сильно упрощают и автоматизируют работу с памятью, чем избавляют разработчика от массы головной боли и повышают надежность. Иногда даже создается впечатление, что пишешь на динамическом языке программирования. Это же сокращает пропасть между QML и C++, делая переход между ними более-менее плавным.


Во-вторых, все модели QML в конечном итоге приводятся к этим самым C++-моделям, только мы получаем упрощенный вариант и не самое максимальное быстродействие. Если уже есть понимание, как работать с моделями на QML, то с C++-моделями будет справиться проще. Мы просто узнаем в процессе чуть больше низкоуровневой информации, заодно улучшится понимание, как все это работает.


В общем, освоить C++-модели очень даже стоит. В особенности это касается QAbstractItemModel, с которой мы и начнем.


Model-View в QML:


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

Распределенная программа для учета времени

Reading time5 min
Views11K

Сегодня мы поговорим об учете самого важного, на мой взгляд, ресурса — времени. Почему я считаю его самым важным? Потому, что он невосполнимый: его есть определённое количество и нового не будет. Можно только постараться максимально разумно распорядиться доступным. И куда же в этом деле без грамотного учёта? Я бы сказал, что учёт является базой для таких вещей, как тайм-менеджмент и планирование, т.к. без понимания, как расходуется время, крайне непросто его распределять и вообще что-то планировать. Да и просто полезно осознавать, на что и в каких количествах мы тратим драгоценное время нашей жизни.


Для решения этой задачи я предлагаю достаточно простой инструмент. Заинтересовавшимся добро пожаловать под кат.


Подробнее про инструмент

Выпуск фреймворка Qt 5.6

Reading time4 min
Views21K
На прошлой неделе, после девяти месяцев разработки, вышла версия 5.6 кроссплатформенного фреймворка Qt.

Qt позволяет разрабатывать приложения при помощи C++ и декларативного языка программирования QML, поддерживает все основные десктопные и мобильные платформы, а также некоторые встраиваемые и имеет открытый исходный код. Существует коммерческая версия Qt, содержащая дополнительные проприетарные модули.

Новый выпуск принес длительный срок поддержки, новые экспериментальные модули (и удаление устаревших), поддержку новых платформ, а также новый тарифный план для стартапов в коммерческой версии Qt.


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

Проект Qt меняет лицензию и открывает код некоторых модулей

Reading time3 min
Views32K
На прошлой неделе компания Qt Company (подразделение Digia) обновила текст соглашения с организацией KDE Free Qt Foundation и объявила о новой политике лицензирования Qt.

Организация KDE Free Qt Foundation была основана в 1998 г. с целью защиты Qt как свободного ПО. Между организацией и компанией Trolltech был заключен договор, позволяющий в случае прекращения разработки свободной версии Qt, выпустить Qt под лицензией типа BSD (или любой другой свободной). Договор обновлялся, по мере того, как права на Qt переходили к Nokia, а затем к Digia.

Подробности новой лицензионной политики Qt под катом.


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

Выпуск фреймворка Qt 5.5

Reading time2 min
Views30K
Вчера, после шести месяцев разработки, вышла версия 5.5 кроссплатформенного фреймворка Qt.

Qt позволяет разрабатывать приложения при помощи C++ и декларативного языка программирования QML, поддерживает все основные десктопные и мобильные платформы, а также некоторые встраиваемые и имеет открытый исходный код. Существует коммерческая версия Qt, содержащая дополнительные проприетарные модули.

По сравнению с предыдущей версией, в 5.5 было внесено около 1500 исправлений и добавлен новый функционал. За подробностями прошу под кат.


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

Выпуск дистрибутива Mageia 5

Reading time3 min
Views10K


Mageia — это некоммерческий дистрибутив Linux, развиваемый одноименным сообществом. Был основан в 2010 году бывшими разработчиками Mandriva как форк и имеет много общего со своим предком.

Основное рабочее окружение — KDE. Есть версия с GNOME, а также в репозиториях и на DVD присутствуют его форки — Mate и Cinnamon. Есть свой графический конфигуратор, позволяющий настроить систему без необходимости лезть в консоль.

Новые версии дистрибутива выходят примерно раз в 9 месяцев. Для тех, кому нужен rolling-release — есть разрабатываемая ветка Cauldron, которая постоянно обновляется новыми версиями программ.

19 июня вышла пятая версия Mageia. Давайте посмотрим, чем разработчики могут нас порадовать в этот раз.
Читать дальше →

Mageia 4

Reading time2 min
Views32K


Mageia — это дистрибутив Linux, основанный в 2010 году бывшими сотрудниками компании Mandriva. Дистрибутив был создан как форк Mandriva и имеет много общего со своим предком. В отличии от Mandriva, это некоммерческий дистрибутив и развивается сообществом.

Основное рабочее окружение — KDE. Есть версия с GNOME, а также в репозитариях и на DVD присутвуют его форки — Mate и Cinnamon. Есть свой графический конфигуратор, позволяющий настроить систему без необходимости лезть в консоль.

Новые версии дистрибутива выходят примерно раз в 9 месяцев. Для тех, кому нужет rolling-release — есть разрабатываемая ветка Cauldron, которая постоянно обновляется новыми версиями программ.

Сегодня вышла четвертая версия Mageia.
Читать дальше →

Model-View в QML. Часть третья: Модели в QML и JavaScript

Reading time14 min
Views54K
Модель у нас отвечает за доступ к данным. Модель может быть реализована как в самом QML, так и на C++. Выбор тут больше всего зависит от того, где находится источник данных. Если в качестве источника данных используется код на C++, то там удобнее сделать и модель. Если же данные поступают напрямую в QML (например получаются из сети при помощи XMLHttpRequest), то лучше и модель реализовать на QML. Иначе придется передавать данные в C++, чтобы затем обратно их получать для отображения, что только усложнит код.

По тому, как модели реализуются, я разделю их на три категории:
  • модели на C++;
  • модели на QML;
  • модели на JavaScript.

JavaScript-модели я вынес в отдельную категорию, т.к. у них есть определенные особенности, про них я расскажу чуть позже.
Начнем рассмотрение с моделей, реализованных средствами QML.

Model-View в QML:
  1. Model-View в QML. Часть нулевая, вводная
  2. Model-View в QML. Часть первая: Представления на основе готовых компонентов
  3. Model-View в QML. Часть вторая: Кастомные представления
  4. Model-View в QML. Часть третья: Модели в QML и JavaScript
  5. Model-View в QML. Часть четвертая: C++-модели

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

Игры серии X в распродаже Humble Weekly Sale

Reading time3 min
Views16K
Комания Humble Bundle продолжает радовать нас хорошими распродажами. В добавок к запущенной неделю назад девятой акции Humble Indie Bundle, сегодня стартовала распродажа игрушек серии X.

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


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

Model-View в QML. Часть вторая: Кастомные представления

Reading time11 min
Views34K
Не всегда готовые представления идеально подходят. Рассмотрим компоненты, которые позволяют создать полностью кастомизированное представление и добиться большой гибкости в построении интерфейса. И еще от меня небольшой бонус для терпеливых читателей :)

Model-View в QML:
  1. Model-View в QML. Часть нулевая, вводная
  2. Model-View в QML. Часть первая: Представления на основе готовых компонентов
  3. Model-View в QML. Часть вторая: Кастомные представления
  4. Model-View в QML. Часть третья: Модели в QML и JavaScript
  5. Model-View в QML. Часть четвертая: C++-модели

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

Model-View в QML. Часть первая: Представления на основе готовых компонентов

Reading time10 min
Views66K
В этой части моего цикла статей про Model-View в QML мы начнем рассматривать представления и начнем с тех, которые делаются на основе готовых компонентов.

Model-View в QML:
  1. Model-View в QML. Часть нулевая, вводная
  2. Model-View в QML. Часть первая: Представления на основе готовых компонентов
  3. Model-View в QML. Часть вторая: Кастомные представления
  4. Model-View в QML. Часть третья: Модели в QML и JavaScript
  5. Model-View в QML. Часть четвертая: C++-модели

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

В Humble Indie Bundle 8 добавили новых игр

Reading time3 min
Views14K
Очередная распродажа Humble Indie Bundle, спустя некоторое время после начала, традиционно пополнилась новыми играми. Причем одна из них не такая уж и инди, любители хорошей графики оценят. Для тех, кому интересно — добро пожаловать под кат ;)


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

Model-View в QML. Часть нулевая, вводная

Reading time6 min
Views77K
Одним из наиболее распространенных и эффективных приемов проектирования программ является использование шаблона программирования MVC (Model-View-Controller) — Модель-Представление-Контроль. MVC позволяет разделить части программы, отвечающие за хранение и доступ к данным, отображение данных и за взаимодействие с пользователем на отдельные слабо связанные модули. Подобное разделение ответственности упрощает структуру программы и позволяет вносить изменения в одну из этих частей не затрагивая остальные.

Такой подход активно применяется в Qt, а в QML вообще является краеугольным камнем. Так что тем, кто изучает QML понимание принципов MVC будет совсем не лишним.

Model-View в QML:
  1. Model-View в QML. Часть нулевая, вводная
  2. Model-View в QML. Часть первая: Представления на основе готовых компонентов
  3. Model-View в QML. Часть вторая: Кастомные представления
  4. Model-View в QML. Часть третья: Модели в QML и JavaScript
  5. Model-View в QML. Часть четвертая: C++-модели

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

Вышла Mageia 3

Reading time2 min
Views27K


Mageia — это дистрибутив Linux, основанный в 2010 году бывшими сотрудниками компании Mandriva. Дистрибутив был создан как форк Mandriva и имеет много общего со своим предком. В отличии от Mandriva, это некоммерческий дистрибутив и развивается сообществом. Дистрибутив находится на втором месте по популярности на сайте distrowatch.com.

Основное рабочее окружение — KDE, но есть версии и с GNOME. Есть свой графический конфигуратор, позволяющий настроить систему без необходимости лезть в консоль. Для любителей поиграться тоже кое-что есть.

Новые версии дистрибутива выходят примерно раз в 9 месяцев. Для тех, кому нужет rolling-release — есть разрабатываемая ветка Cauldron, которая постоянно обновляется новыми версиями программ.

Сегодня вышла третья версия этого дистрибутива. Выпуск посвящается памяти Евгения Додонова.
Читать дальше →

Интеграция приложения на QML с веб-ресурсами

Reading time14 min
Views30K
Здравствуй, дорогой хабражитель! Я хочу рассказать, как интегрировать программу на новомодном языке QML с веб-ресурсами.

Сам по себе, QML — это декларативный JavaScript-подобный язык программирования, который входит в фреймворк Qt. Разработчики Qt настроены серьезно и продвигают его как основной инструмент создания интерфейсов. Более того, достаточно много вещей можно сделать не прибегая вообще к C++, в том числе и возможность работы с веб-серверами.

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

Учитывая, что в Qt 5.1, альфа версия которой вышла на прошлой неделе, включена начальная поддержка Android и iOS, эта тема может быть особенно интересна тем, кто присматривается к Qt или активно ее осваивает. В этой статье я расскажу, как можно организовать работу с веб-ресурсами из приложения на QML на примере API ВКонтакте.

На всякий случай отмечу, что я рассматриваю последнюю стабильную версию Qt 5.0.2. В более ранних версиях каких-то возможностей может не быть.
Читать дальше →

Использование Loader в QML

Reading time6 min
Views39K
Добрый день! В этой статье я расскажу про такой компонент из QML как Loader.

Он позволяет создать контейнер, в который затем можно вложить необходимый qml-элемент, использовать разные элементы в зависимости от состояния программы, а также сделать редко используемые части загружаемыми по требованию и сэкономить ресурсы. Loader является контейнером для QML-компонента и сам по себе не отображается.

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

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

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity