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

Qt *

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

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

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

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

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

Новости

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

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров949

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

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

Читать далее

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

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров996

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров514

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

Читать далее

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

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

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

Читать далее

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

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров653

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

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

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 мин
Количество просмотров1.6K

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

Читать далее
1
23 ...