Обновить
4.84

Qt *

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

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

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

Время на прочтение9 мин
Охват и читатели9K

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

Новости Qt, май 2018 — декабрь 2018

Время на прочтение8 мин
Охват и читатели12K

Очередной сборник новостей Qt, на этот раз за последние полгода с прошлой статьи. Релизы 5.11 и 5.12, реинкарнация PySide, внезапные похороны Qbs, выход Qt Design Studio и значительное улучшение условий лицензий для стартапов.


ДДПВ

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

Официальный релиз первого телефона с Ubuntu Phone внутри

Время на прочтение1 мин
Охват и читатели83K
Дорогие друзья, хочется рассказать вам о том, что состоялся долгожданный и неоднократно откладываемый релиз Ubuntu Phone!

Вкратце о новинке


image
Первый телефон выпустила испанская компания BQ, он носит название Aquaris E4.5 Ubuntu Edition (вторая часть которого намекает, что телефон и ранее присутствовал на рынке и просто был адаптирован под UP). Сам по себе телефон имеет довольно скромные характеристики (которые можно увидеть под катом), однако и цена соответствующая — €169.90 (или примерно $190). Из этого несложно сделать вывод, что конкретно эта модель будет в первую очередь бороться за рынок бюджетных устройств (где доминирует Android и уже показывает неплохую конкуренцию Windows, например). Продажи начнутся в понедельник, 9 февраля.
Подробности

Сверхбыстрое копирование\вставка фрагментов кода

Время на прочтение6 мин
Охват и читатели30K
Постоянно программируя на C++/Qt, я заметил, что было бы удобнее хранить где-нибудь свои отрывки кода и иметь к ним быстрый доступ. Конечно же, я принялся искать и нашёл множество готовых программ-органайзеров и сайтов. Я перепробовал их, но меня всё это не устроило.

Хотелось именно быстрого доступа — а значит по глобальным хоткеям. Чтобы нажал — ввёл слова в поиск — получил код. Но такими функциями обладали всего две программы, а они были платными и не кроссплатформенными.

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

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

Сборка Qt5 в Visual Studio 2012 или я могу пришить глаз кенгуру пока течет мой любимый кетчуп

Время на прочтение7 мин
Охват и читатели39K
Не так давно вышел новый Qt, обещающий большое и светлое будущее, и я решил опробовать сие чудо. Но для начала работы с этим чудом мне понадобилось собрать его для моей установленной студии 2012 года из исходных файлов. А сборка оказалась далеко не тривиальной (хотя кривость моих рук никто не отменял – таким студентам, как я, руки необходимо об забор выпрямлять).
Читать дальше →

Система расширений Qt Creator

Время на прочтение33 мин
Охват и читатели84K

Предисловие


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

Введение


Это заметка, в которой я хотел бы немного описать архитектуру и систему расширений среды разработки Qt Creator. Изначально, я предполагал лишь перевести документ Writing-Qt-Cretor-plugins.pdf, но так уж вышло, что развитие Qt Creator не стоит на месте и во первых, данный документ уже не столь актуален (сам устарел, API поменялось, куски кода не полные и часто не работают), а во вторых со времени его написания появлись дополнительные возможности расширения Qt Creator, которые хотелось бы описать.

Тем не менее, не будь этого документа, не было бы и данной заметки: из него я взял очень много, вплоть до структуры поста, при этом постаравшись где-то что-то выкидывая/заменяя/добавляя сделать пост актуальным для последней на текущий момент времени версии Qt Creator 2.4.0.

Кому может быть полезен данный документ? В первую очередь это конечно же Qt-программисты, которые выбрали данную IDE как основную среду разработки.

Кроме того, благодаря продуманной системе расширений Qt Creator, данный материал будет полезен тем, кто собрался создавать собственные средства разработки, но не хотят начинать писать их с чистого листа: человек может отключить все ненужные ему расширения Qt Creator и написать свои собственные, пользуясь при этом готовыми примерами в исходниках Qt Creator.

Итак, что же нас ожидает под катом (жирным отмечены готовые разделы):

  1. Сборка Qt Creator
  2. Первое расширение
  3. Добавление новых меню и пунктов меню
  4. Архитектура Qt Creator
  5. Добавление нового редактора (Editor)
  6. Добавление боковой навигационной панели
  7. Добавление страницы в диалог настроек
  8. Добавление фильтра в диалог поиска
  9. Добавление нового типа проекта

Напомню, что Qt Creator является кросс-платформенной свободной IDE для работы с фреймворком Qt, разработанной Trolltech (Nokia). Что не мешает сделать из него простой текстовый редактор с подсветкой синтаксиса, простым отключением всех расширений. Внимание, сотни картинок!
Читать дальше →

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

Время на прочтение1 мин
Охват и читатели2.5K
Всем привет. Пару дней назад я начал немного «похачивать» 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

Время на прочтение13 мин
Охват и читатели103K
Qt — чрезвычайно мощный и удобный фреймворк для C++. Но у этого удобства есть и обратная сторона: довольно много вещей в Qt происходят скрыто от пользователя. В большинстве случаев соответствующая функциональность в Qt «магически» работает и это приучает пользователя просто принимать эту магию как данность. Однако когда магия все же ломается то распознать и решить неожиданно возникшую на ровном казалось бы месте проблему оказывается чрезвычайно сложно.

Эта статья — попытка систематизации того как в Qt «под капотом» реализована работа с потоками и о некотором количестве неочевидных подводных камней связанных с ограничениями этой модели.

Основы
Thread affinity, инициализация и их ограничения
Главный поток, QCoreApplication и GUI
Rendering thread
Заключение

А Вы правильно работаете с QThread и сигналами?

Использование моделей в Qt

Время на прочтение4 мин
Охват и читатели106K
За последний год пришлось довольно много работать с Model/View фреймворком Qt. Приходилось как писать собственные модели, так и переделывать существующие. И вот, после созерцания очередного творения, решил представить общественности некоторые наработки.

Начнем с очевидного:

Не используйте виджеты

Все эти QTableWidget, QListWidget и QTreeWidget — не для вас.

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

Одни плюсы, а минусов, при этом, не замечено.
Читать дальше →

«Жизнь» Джона Конвея на Qt

Время на прочтение5 мин
Охват и читатели15K
Привет, {{username}}!



Сегодня я хочу показать, как реализовать всеми любимую игру Game Of Life Джона Конвея на Qt. Писать будем на виджетах. На примере этого проекта я покажу как работать с QPainter, несколькими классами из core, лэйаутами и вообще с графикой в Qt Widgets. Всем кому интересна эта игра или работа с графикой на Qt, прошу читать дальше. Вообще, статья ориентирована на новичков, но и продвинутым ребятам тоже будет что прочитать:).

Кому лень — вот тут лежит исходничег проекта. Можно собирать сразу, зависимости на core, gui.
Читать дальше →

А давайте пощупаем Qt5

Время на прочтение4 мин
Охват и читатели27K
Выход первой альфы Qt5 уже не за горами, но зачем нам ждать этого момента, если мы можем прямо сейчас окунуться в ближайшее будущее с его QtQuick2, V8 и qpa?
Поехали

Properties framework для Qt

Время на прочтение7 мин
Охват и читатели25K


Проблема

В Qt существует замечательная вещь — Q_PROPERTY, которая позволяет добавить необходимое свойство к любому QObject классу. Но в некоторых случаях пользоваться ими неудобно.

Например, у вас есть приложение, в котором существуют (или можно создавать) много различных объектов и, которые необходимо настраивать (выдавать диалог со свойствами выбранного объекта). Примером таких приложений может быть почти любая инженерная программа, редактор векторной графики, Visual Studio в конце концов.
Подробнее

QML и C++. Простой пример связки

Время на прочтение9 мин
Охват и читатели92K
image
QML технология красивая и радует глаз. Меня она очень заинтересовала, и я решил ее освоить. Но не тут то было, ибо я оказался тупым и беспомощным. Нигде в сети не нашел примера «для чайников» (наверно плохо искал), чтобы с нуля построить простейшее приложение QML и C++ в связке. Везде чего-то не хватало: или не учитывался Qt Creator, или код выдавал ошибки, или отсутствовали целые моменты, которые пользователи должны были сами знать. Официальная документация и примеры здесь на хабре также были с этими недостатками. Вот и решил после долгих попыток и ошибок написать такую статью для начинающих с подробнейшим описанием.

Задача. Нужно написать программу QML в связке с С++, где
1. На форме располагается кнопка, строка ввода, и поле вывода.
2. Требуется считать из строки ввода число, прибавляется 1, и ответ выводится в поле вывода.
3. Интерфейс написан на QML.
4. Функционал на С++, то есть нам нужно обеспечить взаимосвязь между QML и C++: кнопка QML вызывает С++ функцию, а функция меняет свойства QML объектов.
Читать дальше →

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

Работа с моделями и делегатами на примере создания списка аля FireFox

Время на прочтение8 мин
Охват и читатели27K
Не раз проскакивали сравнения сложности построения интерфейсов на Qt. В данной статье приведу пример, как можно сделать список в стиле списка модулей FireFox.



Для этого воспользуемся MVC подходом, который реализован в Qt. На выходе получим что-то вроде этого:


Весь процесс разделим на 3 части:
  1. создание модели
  2. создание делегата
  3. создание представления


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

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

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

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

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

QtCreator TODO Plugin. Продолжение

Время на прочтение5 мин
Охват и читатели5.6K
TODO Plugin

Некоторое время назад я писал о разработанном мною плагине отображающем список все TODO, FIXME и т. д. комментариев в текущем открытом документе. Вчера я выпустил новую версию этого плагина, в которой получилось довольно много изменений, вот ключевые из них:
  • Появились настройки
  • Теперь можно добавлять свои ключевые слова для поиска и задавать цвет и иконку их вывода.
  • Можно выбирать куда выводить информацию: в стандартное окно «Build issues» или в отдельное «TODO Output».
  • Можно выбирать: попрежнему выводить информацию только о текущем открытом файле или собирать информацию со всего текущего проекта.
  • Комментарии на языках отличных от английского теперь отображаются корректно.

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

Qt 4.7.0 Released

Время на прочтение1 мин
Охват и читатели956
Из основных изменений:
  • Qt Quick — пока что только сам язык разметки QML и QtDeclarative модуль, тулзы для создания интерфейсов на QML будут выпущены с релизом Qt Creator 2.1 (снепшоты уже доступны
  • Улучшенная производительность и качество
  • Обновления по фичам и производительности в Qt Webkit Integration
  • Обновился VS Add-In, добавлена поддержка VS2010 (спасибо ulintb)

Качать
What's new
Более подробный What's new
4.7.0 changelog
Новость на офсайте

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

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

Начнем

Смешать и слегка взболтать: Qt, Carbon и Cocoa

Время на прочтение6 мин
Охват и читатели2.7K
Qt можно считать наиболее распространенной кроссплатформенной библиотекой для разработки пользовательских интерфейсов. Carbon (С++) и Cocoa (Objective-C), в свою очередь, являются основными фреймворками, используемыми Apple, что означает гармоничный внешний вид и наилучшую интеграцию с системой при их использовании. Несмотря на попытки создания свободных клонов, в полном объеме они реализованы только в MacOS.

Уверен, что вопросом связи Qt и Cocoa задавались многие, но в условиях отсутствия внятной информации в интернете вряд-ли достигли значимых успехов.
мои результаты

Qt: Embedded World 2017 и roadmap

Время на прочтение10 мин
Охват и читатели17K

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


Я работаю в The Qt Company (в офисе Осло, Норвегия), и видя как обделено вниманием весьма немаленькое русскоязычное сообщество, я решил написать эту статью на русском и рассказать немного о прошедшей на позапрошлой неделе в Нюрнберге конференции Embedded World 2017, а также поделиться планами компании на будущие релизы Qt. Но хотя статья и на русском, ссылки всё же ведут на английскую документацию, а также некоторые термины я решил оставить в оригинале.

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

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