Обновить
32K+

Qt *

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

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

Самодельная мобильная лаборатория из старого мультиметра и подручного телефона

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели20K

Эта история началась с того, что я допиливал свой пет-проект по обработке данных. В ходе работы мне попался старый, но надежный мультиметр. Я долго им пользовался ранее, изучая электронику. Сам прибор неплохой, но софт под него сильно устарел, да и заточен он только под Windows. Так я занялся реверс-инжинирингом, отладкой обмена сообщениями и сборкой библиотек для телефона. Подробности — под катом!
Читать дальше →

Как добавить в Qt QVariant свой тип данных Currency (он же Decimal)

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели2.4K

Как добавить свой тип данных в QVariant для совместимости с VT_CY VARIANT от корпорации Майкрософт.

Речь о фреймворке Qt, решаем проблему с подключением ккт Штрих к программе на С++.

Читать далее

Маркировка под ФФД 1.2 и сканеры штрих кода в режиме клавиатуры

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели3.8K

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

Я думаю многие уже бились головой об стену не понимая как настроить сканер для корректной работы с маркировкой по ФФД 1.2.

Под корректной работой понимается, что считанный сканером код должен хотя бы распознаваться сначала корректно онлайн сервером ОФД и конечно далее сервером честного знака.

Суть проблемы в том, что в коде маркировка по формату Datamatrix присутствуют обычно 2 разделителя со значением 0x1d или их ещё называют GS. 

Это управляющие символы, как они ещё применялись со времён программирования на перфокартах. Проблема в том, что они отсутствуют на клавиатуре визуально, располагаются в самом начале таблицы ASCII, и не имеют символьного представления. То есть в текстовом редакторе вы их просто так не увидите.

Да, надо отметить,развлекаемся со сканерами мы в Виндоус. На Винде, как я понял, USB драйвер  клавиатуры всегда передавал сканкоды в соответствии с таблицей XT стандарта, где за каждой клавишей закреплёно конкретное значение.

USB драйвер всегда передает байты, как вы понимаете, и всегда от конкретной клавиши идёт одно конкретное значение (байт если хотите).

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

Читать далее

Эффективная передача данных: используем Protocol Buffers для коммуникации между ESP32 и QT/QML

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели11K

Привет, Хабр!

Сегодня я хочу рассказать вам о том, как можно эффективно использовать Protocol Buffers в сочетании с ESP32 и Qt Framework. Для наглядности я сделаю это на примере собственного хобби-проекта, который представляет из себя гидропонную систему. В этом проекте мы попытаемся наладить коммуникацию между ESP32 и приложением Qt/QML, используя Protocol Buffers через UDP.

Читать далее

Средства диагностики Плагин для Qt Creator Qt5 и Qt6

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели2.5K

К сожалению, в Qt Creator нет таких же удобных диагностических инструментов, как Visual Studio Diagnostic Tools. Поэтому, для удобства, многим удобнее было бы пользоваться разработанным плагином DiagnosticTools для Qt Creator (Qt5, Qt6), в котором вы можете получить подробную информацию о разрабатываемых приложениях во время отладки кода.

Читать далее

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

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели4.2K

В этой статье описывается, как создать (собрать) плагин Qt Creator, используя новый шаблон плагина CMake, предоставленный Qt Creator. А так же, описывается общая структура шаблона плагина.

Читать далее

Электронная картина с автонастройкой яркости на C++/Qt

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

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

Дело в том, что я давно люблю и ценю изобразительное искусство. И также люблю изучение истории (и вообще считаю, что не программированием единым должен жить человек). И я подумал, что изучение истории и живописи можно слить в единый флакон – будет и не скучно, и полезно. Особенно полезно подрастающему школьному и дошкольному поколению. Я захотел электронную картину – чтобы выглядела как картина, а изображения бы настраивались мной, автоматически сменяясь по таймеру. Каждый день – новая картина. Каждый день – повод обсудить с сыном, как видели этот мир художники 200, 300, 500 лет назад, и вообще, а что это за разновидность палаша, аркебузы или фрегата запечатлел здесь художник. А здесь какое важное для мировой истории событие показано?

Изучив рынок электроники, я понял, что подходящего под мои требования продукта просто не найти (хотя отдаленно похожие есть, конечно). Потому я прикинул доступную мне элементную базу, расчехлил клавиатуру и принялся писать код. В итоге получилось десктоп-приложение на С++/Qt, которое я закинул на мини-ПК под Windows, а сама картина представила собой обрамленный в багет сенсорный дисплей на 18,5 дюймов с прекрасной цветопередачей. По итогу заинтересовался не только сын, но, неожиданно, и жена.

Детали под катом

Способы создания пользовательских компонентов в QML

Уровень сложностиСредний
Время на прочтение24 мин
Охват и читатели5.5K

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

Также одним из условий будет, чтобы внешний вид полученных элементов можно было редактировать в QtCreator.

Все исходники в репозитории.

Читать далее

Хакнуть Qt: как мы запускали Picture-in-Picture в навигаторе 2ГИС

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели10K

Привет! Я Егор Ерусланов, Qt-разработчик.

В Android-приложение 2ГИС мы добавили новый режим PiP (Picture-in-Picture, или «картинка в картинке»). С PiP наши пользователи смогут следить за маршрутом в маленьком плавающем окне на основном экране. Например, когда нужно быстро прочитать сообщение или включить подкаст и при этом сохранять фокус на навигации. Режим PiP — это не просто «приятная мелочь», а функциональность, которая подстраивается под новые требования пользователей навигатора. 

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

Читать далее

Компенсация уменьшения размеров изображения при повороте и отображении с помощью функции QPainter drawPixmap

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели1.1K

Столкнулся с интересным результатом при прорисовывании в QPainter квадратного изображения QPixmap с помощью функции drawPixmap. После поворота изображение уменьшалось. Результат представлен на рисунке.

Читать далее

ProxyOrmModel — ORM-подход к работе с данными в Qt

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели2.3K

Привет, Хабр! В этой статье я хочу рассказать о своём проекте — библиотеке ProxyOrmModel для Qt, которая упрощает работу с данными в моделях. Если вы когда-нибудь сталкивались с необходимостью фильтровать, сортировать, группировать или агрегировать данные в QAbstractItemModel, то, вероятно, знаете, как это может быть утомительно. Я решил создать инструмент, который делает это проще и удобнее, вдохновившись идеями ORM (Object-Relational Mapping) из мира баз данных. Здесь я поделюсь архитектурой, ключевыми классами и уроками, которые я вынес из разработки.

Читать далее

Правильная отрисовка выделения текста в QTextDocument: использование QAbstractTextDocumentLayout::PaintContext

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели1.8K

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

Читать далее

Сложность концепции компоновки на примере для Qt (шпаргалка)

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели5.9K

Описания компоновки (управления автоматическим размещением визуальных элементов) которые мне попадались на родном языке мне кажутся не достаточно погружают читателя в реальную проблематику которая стоит за этим процессом. Мне хочется акцентировать внимание на том откуда берется сложность в этом вопросе. Хотелось бы чтобы кто-то покритиковал мои формулировки.

Читать далее

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

Установка Qt на Windows без регистрации и VPN. Часть 1. VisualStudio Community + Conan.io

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели74K

До присоединения Qt Group к санкциям, для установки Qt Framework and Tools было достаточно скачать Qt Online Installer, ввести данные учетной записи и выбрать интересующие компоненты в меню. Ныне приходится выбирать из скольких вариантов установки: прибегнуть к помощи одного из пакетных менеджеров или собрать из исходников. У каждого варианта есть свои плюсы и минусы. В этой статье рассмотрим установку через один из наиболее популярных пакетных менеджеров для с++ Conan.

Целевая операционная система: Windows 10

Шаг 0. Установка компилятора

Скачиваем с официального сайта VisualStudio Community

https://visualstudio.microsoft.com/ru/downloads/

Запускаем инсталлятор, для работы понадобится набор «Разработка классических приложений С++»

Читать далее

Особенности построения графиков Qt в «Авроре»

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели8.5K

Привет, читатель! Графики — это удобно. Нередко при разработке они нужны мне для визуализации процесса или демонстрации критичных событий. А еще их можно использовать, чтобы отобразить изменения погоды в течение дня, колебания курса валюты или диаграмму нагрузки и доступности сервера. В большинстве случаев для построения графиков есть готовые инструменты в самой операционной системе, но если вы это читаете, то в «Авроре» я ничего такого не нашел. Как я решал проблему и с какими подводными камнями столкнулся, рассказываю под катом.
Читать дальше →

Дебажим баги в дебаггере x64dbg. «Шаг с выходом» в GUI

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели3.6K

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

Сделать шаг с выходом

WorkStarter: утилита для автоматизации запуска программ при старте Windows

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

Привет, Хабр! 👋 Хочу поделиться небольшим проектом, который я разработал для решения личной задачи. Возможно, кому-то он тоже пригодится.

Что это такое?

WorkStarter - это простая утилита для Windows, которая позволяет автоматически запускать программы и открывать веб-сайты при старте компьютера. Основная идея заключается в том, чтобы упростить процесс подготовки рабочего окружения после включения ПК.

Основные возможности
- 🖥️ Автоматический запуск программ
- 🌐 Открытие веб-сайтов
- ⏱️ Настройка задержки для каждой задачи
- 🎨 Графический интерфейс для управления задачами
- 🔧 Хранение конфигурации в JSON-формате

Как это работает?

WorkStarter состоит из двух основных компонентов:

1. WorkStarter Configuration - графический интерфейс для настройки задач.
2. WorkStarterAgent - фоновый процесс, который запускается при старте системы и выполняет настроенные задачи.

Конфигурация хранится в файле config.json в пользовательской директории приложения.

Технические детали

Проект написан на Python с использованием следующих библиотек:
- PyQt6 для создания графического интерфейса
- asyncio для асинхронного выполнения задач
- appdirs для управления директориями приложения

Установка и использование

1. ⬇️ Скачайте последнюю версию WorkStarter
2. Запустите установщик и следуйте инструкциям
3. После установки запустите "WorkStarter Configuration" из меню "Пуск"
4. Добавьте нужные задачи через графический интерфейс
5. WorkStarterAgent будет автоматически запускаться при старте системы

Ограничения и планы на будущее

На данный момент утилита работает только на Windows и имеет ограниченный функционал. В будущем планируется:

Читать далее

Qt-шные прокси-модели и их друзья

Уровень сложностиСложный
Время на прочтение4 мин
Охват и читатели4K

Разрабатывая приложения на Qt или PyQt/PySide2 вы рано или поздно столкнетесь с необходимостью создания собственной реализации QAbstractItemModel и/или QAbstractProxyModel. Я хочу рассказать про одну конкретную проблему, с которой я столкнулся, разрабатывая прокси-модель с возможностью группировки объектов дерева.

Читать далее

Рабочая C++ IDE в docker container

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели14K

Привет, хабр! Программирую на C++ / Qt / QML в среде разработки QtCreator уже 6-ой год. У меня есть определенные пересечения мыслей с мозгом груга и еще мне постоянно хочется избавиться от глупой и рутинной работы, которая есть на разных этапах разработки. Одна из таких работ - возня с IDE и рабочим окружением, особенно в мире C++ разработки. В статье постараюсь раскрыть проблему и описать свой текущий подход к решению.

Читать далее

Мини-гайд по стилям в Qt (PySide6)

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели15K

Здравствуйте, уважаемые Хабрчане и гости!

Так как моя первая статья была опубликована и получила хоть какой-то положительный отклик, решил сделать еще одну статью, которую давно хотел написать.

В данной статье пойдет речь о стилях в Qt, конкретно я буду использовать для примера PySide6.

Опять же, статья не претендует на звание супер-туториала, а скорее носит характер некого «небольшого справочника» или «мини-гайда» для тех, кто хочет приукрасить свое приложение на Qt. Тем более я не pro в CSS, и делаю на пробу, эксперементрую.

В качестве примера возьму несколько виджетов, и постараюсь схематично наглядно показать, как некоторые строки из QSS (CSS для Qt) могут преобразить виджет.

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

Есть несколько способов, как можно применить стили к своему приложению (которые я знаю):

Читать далее