Обновить
32K+

Qt *

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

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

TorFlash — приложение для Linux: поиск торрентов, скачивание и копирование на флешку в одно нажатие

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

У меня телевизор, который читает файлы с USB-флешки. Флешка отформатирована в FAT32, а значит — максимум 4 ГБ на файл. Типичный вечер выглядит так:

Linux-приложение для тех, кто смотрит фильмы с USB-флешки. Поиск торрентов по Rutor, NoNaMe-Club и RuTracker, скачивание через libtorrent и автоматическое копирование на флешку с умным разбиением MKV-файлов под FAT32. Один бинарник, PyQt5, open source.

Читать далее

Новости

Kwayk: как я сделал Quake на Qt Quick3D и прикрутил физику из Death Stranding 2

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

Получится ли сделать полноценную 3D-игру на Qt Quick3D?

Именно такой вопрос у меня возник, когда я начал изучать Quick3D. Казалось бы, рендер и партиклы есть, базовая физика в лице Quick3D Physics тоже присутствует. Пример CharacterController из Qt указывал на то, что проблем быть не должно.

Но хотелось проверить это самому на чём-то реальном.

Поскольку моделлер и художник из меня никакой, да и в геймдеве опыта у меня меньше нуля, я решил переписать Quake — любимую игру своего детства. В ней я провёл сотни (тысячи?) часов, играя в мультиплеер на бесплатных серверах МТУ-Информ через модем US Robotics 33600.

В итоге получился проект Kwayk — попытка переписать Quake на Quick3D.

Читать далее

Менеджер паролей на python

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

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

Весь мой путь наполнен любовью к русским разработчикам и открытому коду, а также желанием продвигать российские IT‑продукты (не все конечно).

Читать далее

Pyrog. Основа для приложения мечты

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

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

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

Присоединиться к проекту

Как правильно управлять диалогами в QML: Singleton + JavaScript Promise

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

Уже не первый раз сталкиваюсь в проектах на Qt QML с проблемой управления диалогами и всплывающими окнами.

QML — декларативный язык и это здорово! Мы описываем, что хотим видеть на экране, и, если всё сделали правильно, при запуске программы получаем желаемый результат.

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

Первая — код начинает разрастаться. Даже если вынести диалог в отдельный компонент, его всё равно придётся «тюнить» каждый раз перед отображением, что не очень удобно.

Вторая проблема, как по мне, куда хуже — при создании экрана в приложении будут созданы и все дочерние элементы. То есть диалог может потреблять память, хотя по факту пользователь может так им и не воспользоваться.

Другой вариант, который тоже часто встречается — это обёртка диалога в Component и его непосредственное создание в нужный момент. С точки зрения потребления памяти это уже лучше, но проблему лишнего кода это не решает. Зачастую из-за подготовки такого диалога кода может оказаться даже больше. К тому же нужно не забывать вызывать destroy() для всех динамически созданных объектов, когда они больше не нужны.

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

Читать далее

Почему в C++/Qt нельзя просто взять и забыть про сырые указатели

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

Современный C++ (11/14/17/20…) настойчиво учит нас: «Забудьте про new и delete, используйте умные указатели». Это отличный совет для чистого C++, но как только вы открываете документацию Qt, на вас снова прыгают T*.

Почему даже в 2026 году невозможно написать серьезное приложение на Qt, используя исключительно умные указатели? Давайте разберемся, где «умный» код ломает логику фреймворка.

Читать далее

Rwal: Как я пишу кросс-платформенный менеджер обоев на C++20 в 10 классе

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

Привет, Хабр! Меня зовут Aloncie. Пока в моем окружении часто спорят о том, какой язык программирования учить первым, я решил не выбирать легких путей и закопаться в «кишки» системного программирования.

Мой проект Rwal — это CLI-утилита (с перспективой перехода на GUI) для управления обоями, которая должна одинаково хорошо чувствовать себя в разных окружениях: от KDE и GNOME до Windows. В этой статье я подробно разберу архитектуру проекта, работу с D-Bus, интеграцию со стандартами C++20 и то, как я организовал сборку.

Читать далее

Как я написал Qt-приложение, почти не написав код

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

Всё началось с эксперимента. На основной работе руководство довольно настойчиво рекомендовало использовать ИИ в разработке. В какой-то момент мне стало интересно, насколько далеко можно зайти в этом направлении. Можно ли написать реальное десктопное приложение так, чтобы основную часть кода писал ИИ?

Не в смысле «иногда подсказать синтаксис» или «помочь найти ошибку». А именно в буквальном смысле — чтобы код писал ИИ, а человек формулировал задачи и проверял результат.

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

В итоге кандидатов оказалось два.

Первый вариант — написать утилиту для расчёта коэффициентов цифровых фильтров. Такие инструменты используются для расчёта фильтров с заданными характеристиками — например, с нужной формой АЧХ, ограниченной задержкой и длиной фильтра.

Задача инженерная и интересная.

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

Поэтому в итоге победил второй вариант — написать десктопное приложение для записи звука с бинауральной головы.

Про саму голову я уже писал на Хабре:

https://habr.com/ru/articles/1007864/

Если коротко, идея бинауральной записи довольно простая. Берётся макет головы с ушами, в ушных каналах устанавливаются микрофоны, и звук записывается примерно так, как его слышал бы человек.

Читать далее

Интеграция «Честного знака» или законы Мерфи в разработке

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

«Первый этап любого проекта — неправильно оценить сроки и бюджет проекта.»

История о разработке программы для «Честного знака» с традиционными ироничными сетованиями о том, почему даже простой проект не может быть без подводных камней.

Читать далее

Под капотом qDebug(): как устроено логирование в Qt и что с этим можно сделать

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

Каждый Qt-разработчик начинает знакомство с фреймворком с магической строчки qDebug() << "Hello World". Но задумывались ли вы, что происходит внутри этого вызова? Как Qt обрабатывает логи, какие есть ограничения, и главное — как это можно расширить под свои нужды?

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

Читать далее

librats: Выпуск версии 0.7.x (новая библиотека для распределённых P2P-приложений). Так же релиз rats-search 2.0

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

Всем привет! Я продолжаю развивать свою библиотеку для создания распределённых приложений, которая уже легла в основу новой версии rats-search (распределенного торрент-поисковика).

Она позволяет развернуть собственную P2P-сеть и связать пользователей между собой. Главная особенность — автоматическое обнаружение участников (peer discovery), что крайне актуально в условиях постоянных блокировок и ограничений сети.

На данный момент библиотека поддерживает языки C/C++, Android (Java), Python и Node.js.

С момента выхода прошлой статьи накопилось много приятных изменений, о которых я и хочу рассказать. Кроме того, в этот раз я затрону и сам rats-search новой версии.

Последний стабильный релиз на сегодня — 0.7.0. Исходный код и бинарные файлы доступны для скачивания для:

Читать далее

Приложение на qt. Дневник разработки. Начало

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

Добрый день!

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

У меня есть больше 5 лет опыта разработки приложений на qt, но это мой первый собственный проект. Буду рада вашим комментариям и советам. Также буду рада, если эти статьи кому-нибудь пригодятся для разработки своих проектов.

Читать далее

Генерация лабиринта с использованием Uber H3 на карте в Qt

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

Генерируем лабиринт на гексагональной сетке Uber H3 и ищем путь с помощью двунаправленного A* — всё это на Qt 6 с визуализацией на реальной карте

Читать далее

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

Инь и ян программирования или alter ego многопоточности

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

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

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

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

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

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

Читать далее

Два притопа, три прихлопа

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

Подготавливая статью [1] к публикации, обратил внимание на картинку, показанную на рис. 1. Я сохранил ее, чтобы воспользоваться в будущем. И оно не заставило себя ждать, т.к. захотелось повысить наглядность решения, введя в него графику и используя именно эту картинку.  К чему это привело, далее мы и поговорим.

Все, что связано с картинкой, сделать не так уж сложно. Это довольно подробно описано в цикле статей по реализации графики в ВКПа (см. [2]). Для этого, во-первых, нужно создать графическое окно, установив данную картинку в качестве фона. Во-вторых, воспользоваться существующими заготовками контролов (элементов графического интерфейса), которые необходимо будет разместить на данном фоне.

Читать далее

Logos AI Assistant — полноценный ИИ-агент для вашего десктопа

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

Logos AI Assistant — это не просто инструмент для автоматизации, это ваш творческий и исполнительный партнёр для решения широкого круга задач прямо на рабочем
столе. Он обладает всеми возможностями продвинутых ИИ-ассистентов, таких как Gemini CLI: может писать код, создавать и редактировать тексты, работать с файлами и
выполнять сложные команды в терминале.

Но Logos идёт гораздо дальше. Его ключевое преимущество — это выход за пределы командной строки. Благодаря движку компьютерного зрения OmniParser, ассистент
получает «глаза», а через управление мышью и клавиатурой — «руки». Это фундаментально расширяет перечень решаемых задач. Теперь LLM не ограничена файловой системой и терминалом; она может работать внутри любого графического приложения на вашем компьютере.

Читать далее

Пять лет спустя: почему мы всё переписали с нуля

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

Пять лет назад на Хабре мы писали о Web Camera Pro — и казалось, что впереди только апдейты, оптимизации и новые функции. За это время изменилось многое — и не только в технологиях, но и в законодательстве.

Как мы наступили на те же грабли

Когда в 2015 году мы начинали разработку системы для видеонаблюдения, Qt 5 казался идеальным решением. На первый взгляд всё выглядело просто: берём готовые библиотеки, оборачиваем в красивый интерфейс, добавляем AI-аналитику — и готово.

На Qt было создано множество известных программ для видеонаблюдения, и мы — как и десятки команд по всему миру, поверили в его универсальность.

“Один фреймворк, любая платформа” — звучало как музыка.

Первые месяцы казались триумфом: интерфейс ожил, камеры подключались, поток шёл, воспроизведение работало.

Qt позволял быстро собрать прототип, но, когда речь заходила о стабильности, о 24/7-нагрузке, о реальной работе с потоками и камерами, его недостатки становились критичны.

Читать далее

Сборка AppImage: Пошаговое руководство с готовыми скриптами

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

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

Читать далее

QML и Widgets в одном проекте: решение без костылей

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

В проектах на Qt рано или поздно встаёт вопрос: делать интерфейс на Widgets или на Quick. Первый вариант даёт зрелый набор контролов и привычное поведение окон, второй — гибкость, анимации и GPU-рендеринг. Иногда нужно объединить эти подходы: например, когда в приложении на Qt Quick требуется окно, способное выходить за границы основного, как это делают всплывающие подсказки или выпадающие списки в классических десктопных программах.

В этой статье я разберу рабочий способ показывать окна Qt Widgets из приложений Qt Quick — без хака с QQuickPaintedItem и без потери преимуществ Scene Graph.

Читать далее

Милливольтметр на экране ПК: простое решение

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

Небольшая история с описанием параметров недорогой платы с алиэкспресс и изготовлением на ее базе прибора для измерения напряжений (милливольтметра) с выводом результатов на экран компьютера.

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