Pull to refresh
32
0
Никита Крупенько @BlackRaven86

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

Send message

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

Reading time4 min
Views26K

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


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


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


Читать дальше →
Total votes 43: ↑41 and ↓2+39
Comments65

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

Reading time4 min
Views33K

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


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


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



Читать дальше →
Total votes 34: ↑33 and ↓1+32
Comments44

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

Reading time2 min
Views88K
На днях в сервисе цифровой дистрибуции компьютерных игр и фильмов без DRM GOG.com появилась возможность перенести игры, купленные в Steam в библиотеку GOG.com. После добавления игры не пропадают из Steam, а становятся доступны сразу в двух библиотеках.
Читать дальше →
Total votes 22: ↑18 and ↓4+14
Comments71

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

Reading time13 min
Views62K

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


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


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


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


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


Model-View в QML:


Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments5

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

Reading time5 min
Views10K

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


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


Подробнее про инструмент
Total votes 15: ↑9 and ↓6+3
Comments22

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

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

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

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


Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments43

Проект 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 под катом.


Читать дальше →
Total votes 34: ↑33 and ↓1+32
Comments19

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

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

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

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


Читать дальше →
Total votes 30: ↑30 and ↓0+30
Comments37

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

Reading time3 min
Views10K


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

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

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

19 июня вышла пятая версия Mageia. Давайте посмотрим, чем разработчики могут нас порадовать в этот раз.
Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments12

Mageia 4

Reading time2 min
Views32K


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

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

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

Сегодня вышла четвертая версия Mageia.
Читать дальше →
Total votes 35: ↑27 and ↓8+19
Comments47

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

Reading time14 min
Views51K
Модель у нас отвечает за доступ к данным. Модель может быть реализована как в самом 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++-модели

Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments3

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

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

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


Читать дальше →
Total votes 23: ↑21 and ↓2+19
Comments23

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

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

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++-модели

Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments4

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

Reading time10 min
Views63K
В этой части моего цикла статей про 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++-модели

Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments10

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

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


Читать дальше →
Total votes 25: ↑19 and ↓6+13
Comments12

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

Reading time6 min
Views75K
Одним из наиболее распространенных и эффективных приемов проектирования программ является использование шаблона программирования 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++-модели

Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments3

Вышла Mageia 3

Reading time2 min
Views27K


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

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

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

Сегодня вышла третья версия этого дистрибутива. Выпуск посвящается памяти Евгения Додонова.
Читать дальше →
Total votes 29: ↑26 and ↓3+23
Comments23

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

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

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

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

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

На всякий случай отмечу, что я рассматриваю последнюю стабильную версию Qt 5.0.2. В более ранних версиях каких-то возможностей может не быть.
Читать дальше →
Total votes 26: ↑24 and ↓2+22
Comments14

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

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

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

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

Читать дальше →
Total votes 25: ↑25 and ↓0+25
Comments10

Information

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