Обновить
16K+

Qt *

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

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

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

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

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

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

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

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

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

Читать далее

Новости

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

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

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

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

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

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

Тысяча и одна библиотека С++

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

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

Столкнувшись много раз подряд с тем, что найти что-то толковое довольно непросто, я решил попробовать распутать это узел и предложить для русскоязычных читателей свой справочник классных библиотек на С++. Я исходил из этого источника. Это очень многогранный и объемный список библиотек языка С++, но, скажем так, у меня были к нему вопросы. Потому я сделал перевод, затем значительно улучшил его в плане содержания (далее объясню, как, почему и зачем). На выходе получилось около 1000 библиотек. Как в сказке). Они, конечно, не покрывают все возможные задачи и предметные области, но поверьте, они затрагивают действительно многое.

Прикоснуться к сокровищнице языка С++

Разработка интерфейса для Windows — это боль

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

Последние несколько дней я пытался найти библиотеку, которая бы позволила мне писать на C++ программы с GUI. Мои требования были довольно просты:

• Достаточно только поддержки Windows

• Разрешено коммерческое использование

• Простая стилизация, в том числе и тёмный режим

• Результатом должен быть единый файл .exe размером меньше 40 МБ без или с минимальным количеством зависимостей

• Написание части программы с GUI не должно занимать больше времени, чем сама функциональность

Читать далее

Lesta Studio и её тестовое задание с подвохом

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

Искали статеечку с жалобами джуна о несправедливости IT? Так вот же она!

Открытая к интерпретации история собеседования.

Читать далее

Создаём сложные интерфейсы и спецэффекты на базе Qt. Часть II

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

Привет, Хабр! Меня зовут Михаил Полукаров, я занимаюсь разработкой desktop-версии в команде VK Teams. В первой части я рассказывал о том, как использовать маски и создавать сложные многослойные окна. Под катом этой статьи мы продолжим исследовать возможности Qt Framework, рассмотрим полупрозрачность и управление буксировкой окна, а также реализуем интересный спецэффект. В конце статьи рассмотрим, как можно применить на практике весь, изложенный в этом цикле статей, материал для создания современного демонстрационного приложения.

Читать далее

Как я хакнул свой автомобиль: завершение истории

Время на прочтение19 мин
Охват и читатели23K
Если вы не читали первую часть статьи, то сделайте это.

Часть 2: создаём бэкдор


Хватит ждать


28 апреля 2022 года выпустили новые версии обновлений прошивок Display Audio для автомобилей Hyundai и Kia. К счастью, в том числе и для моей машины.


Я сразу же принялся за разработку собственного обновления прошивки с бэкдором.
Читать дальше →

Как мы разрабатывали мобильное приложение на ОС Аврора (Sailfish Mobile OS RUS)

Время на прочтение8 мин
Охват и читатели54K
Наша команда разработала и поддерживает корпоративное мобильное приложение по приёму платежей в рамках платёжной системы для крупного заказчика. Теперь оно используется сотрудниками клиента на устройствах под управлением операционной системы Аврора (ранее Sailfish Mobile OS RUS) в тридцати семи российских регионах. В этом посте я коротко расскажу об этом проекте и более подробно – о самой операционке.

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

Вышла первая бета-версия операционной системы Haiku R1

Время на прочтение5 мин
Охват и читатели49K
После девяти лет альфа-тестирования и спустя шесть лет с момента формирования прошлого альфа-выпуска подготовлен первый бета-выпуск операционной системы Haiku R1. Изначально проект был создан как реакция на закрытие ОС BeOS и развивался под именем OpenBeOS, но был переименован в 2004 году из-за претензий, связанных с использованием в названии торговой марки BeOS. Для оценки работы нового выпуска доступно несколько загрузочных Live-образов (x86, x86-64). Исходные тексты большей части ОС Haiku распространяются под свободной лицензией MIT, исключение составляют некоторые библиотеки, медиа-кодеки и компоненты, заимствованные из других проектов.

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

В очередной раз анализатор PVS-Studio оказался внимательнее человека

Время на прочтение2 мин
Охват и читатели24K
Возьми баг

Изучая предупреждения анализатора PVS-Studio в процессе проверки различных открытых проектов, мы вновь и вновь убеждаемся, сколь полезен может быть этот инструмент. Анализатор кода невероятно внимателен и никогда не устаёт. Он указывает на ошибки, которые ускользают даже при внимательном обзоре кода. Рассмотрим очередной такой случай.
Читать дальше →

Портируем код с Qt 1.0 на Qt 5.11

Время на прочтение5 мин
Охват и читатели15K
Недавно вышел Qt 5.11 и мне подумалось, что сейчас самое время обновить до него кое-какие мои проектики на Qt 1.0… Ладно, шучу :) На самом деле мне стало интересно, насколько хорошо за все эти годы развития фреймворка Qt нам удавалось сохранять обратную совместимость кода.

Qt гарантирует совместимость на уровне кода и бинарников при обновлении между минорными версиями фреймворка (и мы серьёзно относимся к этому обещанию). Вы не должны переписывать (или даже перекомпилировать) свой код при переходе на другую минорную версию Qt. Однако переходы между мажорными версиями требовали от нас идти на некоторые жертвы ради прогресса. С релиза Qt 1.0 в 1996 году мы ломали совместимость кода четыре раза: в версиях 2.0, 3.0, 4.0 (ох, это было болезненно!) и 5.0.

Мы старались даже в мажорных версиях сломать как можно меньше всего, но всё же это приходилось делать. Отсюда возникает вопрос: насколько сложно портировать приложение, написанное во времена Qt 1.0 до современного Qt 5.11?

Для ответа на этот вопрос я взял пример кода, который поставлялся с документацией на Qt 1.0 и постарался собрать его с помощью Qt 5. Наши публичные архивы содержат изменения начиная с версии 1.41, так что мне пришлось изрядно покопаться в дрейнейшей истории, пройти через логи четырёх разных систем контроля версий… но это я уже отвлекаюсь. Проект, который я планирую собрать, называется «t14» — поскольку это иллюстрация к 14-ой (и последней) главе оригинального руководства.

И вот, что мне пришлось проделать для его сборки.
Читать дальше →

О лицензиях Qt (и немного о компании)

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

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


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


Но речь пойдёт не сразу про лицензии, сначала я хочу рассказать немного о компании, чтобы было понятно, кто именно сейчас занимается разработкой/распространением фреймворка и вообще стоит за Qt.

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

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

Самая нужная программа на свете

Время на прочтение20 мин
Охват и читатели171K
image
Какими программами постоянно пользуются люди? Если подумать над этим вопросом, то окажется, что список этот не такой уж большой. К постоянно используемым программам можно отнести: саму операционную систему, файловый менеджер, текстовый редактор, браузер, мессенджер. Это именно тот базовый набор, которым пользуется на компьютере практически каждый человек. Требования к таким программам должны быть высокими: безотказная работа, быстрое выполнение всех функций, понятный и удобный интерфейс.

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

cool-old-term — старый добрый терминал

Время на прочтение1 мин
Охват и читатели50K
Некто с никнеймом Swordfish90 разрабатывает эмулятор терминала cool-old-term с интерфейсом, напоминающим старые CRT мониторы. Автор признаётся, что мечтал реализовать подобное приложение со времени, когда он впервые сыграл в Fallout III. Swordfish90 пытается сделать олдскульный, но вместе с тем настраиваемый и легковесный эмулятор терминала. Проект разрабатывается с использованием Qt5 и QtQuick, разработка ведётся на Github.


Скрытый текст

SASM – IDE для ассемблера

Время на прочтение4 мин
Охват и читатели132K
Здравствуйте, уважаемые хабравчане!

Данным постом хочу представить сообществу проект, который время от времени писался мной последний год: SASM (SimpleASM) — IDE для разработки программ на языке ассемблера x86 и x86-64.

image

SASM — простая кроссплатформенная (доступна на Windows и Linux) среда разработки для языков ассемблера NASM, MASM, GAS, FASM с подсветкой синтаксиса и отладчиком. Программа работает «из коробки» и хорошо подойдет для начинающих изучение языка ассемблера. Основана на Qt. Распространяется по свободной лицензии GNU GPL v3.0.

Исходники лежат в репозитории на GitHub.
Бинарники можно скачать на сайте программы.

Под катом Вы найдете немножко истории и более подробное описание возможностей.
Читать дальше →

Проверка фреймворка Qt 5

Время на прочтение17 мин
Охват и читатели26K
Qt and PVS-Studio
Инструменты статического анализа кода позволяют устранить множество ошибок ещё на этапе написания текста программы. Например, можно быстро выявить и устранить опечатки. Некоторые программисты искренне уверены, что они не делают опечатки и глупые ошибки. Это не так. Такие ошибки делают все. Эта статья послужит хорошим демонстрационным примером. Опечатки можно найти даже в таком качественном и оттестированном проекте, как Qt.
Читать дальше →

SpeedReader — Qt библиотека для скорочтения

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

Предисловие


Некоторое время назад на Хабре была новость о Spritz — программной реализации техники скорочтения, основанной на быстрой смене слов в виджете с определенным центрированием самого слова внутри виджета, а чуть позже и другая новость. Так как тема довольно актуальная я, недолго думая, решил реализовать нечто подобное и универсальное, с возможностью встраивания такого виджета для скорочтения в программы на различных платформах (win, linux, mac, android). Исходя из этого условия был выбран Qt фрейморк с его широкой поддержкой различных платформ.

То, что получилось и как с этим работать описано ниже. Кому интересно, добро пожаловать.
Читать дальше →

Как работают сигналы и слоты в Qt (часть 1)

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


Qt хорошо известен своим механизмом сигналов и слотов. Но как это работает? В этом посте мы исследуем внутренности QObject и QMetaObject и раскроем их работу за кадром. Я буду давать примеры Qt5 кода, иногда отредактированные для краткости и добавления форматирования.
Читать дальше →

Альфа-версия Otter Browser

Время на прочтение3 мин
Охват и читатели43K
Otter Browser, главное окноПока в России под гром фейерверков весело и задорно встречали Новый год, в тайной лаборатории почти соседней нам Польши родилась альфа-версия браузера, который потенциально может стать заменой Opera ветки 12.x. Написан он с использованием фреймворка Qt5 и соответственно, компонента QtWebKit, но в перспективе будет перенесён на QtWebEngine (который, напомню, основан на коде Blink) и, вероятно, будет иметь возможность переключения на Gecko. Впрочем, это всё в будущем. Сейчас же он предлагает следующие возможности:

  • Вкладки, их прикрепление и открепление, боковые вкладки (но текст поворачивается на 90°, без поворота будет работать потом), вкладки внизу окна;
  • менеджер загрузок;
  • история посещений;
  • просмотр cookies;
  • панель поиска;
  • менеджер сеансов;
  • приватные вкладки и окна;
  • закладки;
  • настройка поисковых движков;
  • корзина закрытых вкладок;
  • масштабирование страницы;
  • миниатюры вкладок при наведении на них мыши.

Ну и ещё по мелочам. Автор подчёркивает, что это не 100% повторение Opera, но по возможности близкая к ней реализация. Как он сам его позиционирует: «Веб-браузер, который контролируется пользователем, а не наоборот». Сама программа изначально разрабатывается как максимально модульная. Упоминавшаяся выше запланированная возможность переключения движков рендеринга — не единственная. Из планируемых функций, например, почтовик и RSS-клиент тоже будут модулями, причём отдельными, но использующими единый интерфейс.

А теперь подробнее...