Обновить
0.86

Qt *

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

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

Обработка дат притягивает ошибки или 77 дефектов в Qt 6

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

PVS-Studio проверяет Qt 6


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

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

Прощай HTML, привет QML

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

HTML mess


Как можно создать web приложение без использования HTML? Для этого нам понадобится: новый браузер, QML и back-end на Java.

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

Китайский протокол AIBUS и лабораторный химический реактор

Время на прочтение4 мин
Охват и читатели4K
Приветствую Хабр! Когда-то давно я написал статью про реакционные ароматизаторы. Прошло много времени, я вернулся к этому вопросу.

В этой статье я не буду вдаваться в подробности технологии разработки реакционных ароматизаторов, а расскажу о моем опыте автоматизировать свое рабочее время и поделюсь кодом, который может кому пригодится. В руки мне попался лабораторный химический реактор китайского производства и к большому сожалению в нем отсутствовали инструменты по автоматизации охлаждения, считывания и записи данных, программирования режимов, что было очень важно. Сам реактор представлял из себя обычную металлическую болванку на штативе, с ТЭНом до 350 градусов. За контроль температуры отвечает контроллер Yudian AI518.


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

Qwt и Qt Creator. Быстро и просто. Часть 2: элементы отображения и управления

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


В примерах использованы Qt Creator 3.0.0 (MinGW) и Qwt-6.1.0.
Для понимания этой статьи читателю желательно:
  • иметь начальный опыт разработки windows-приложений в среде Qt Creator;
  • понимать концепцию «сигнал-слот»;
  • познакомиться с частью №1 цикла моих статей про Qwt: habrahabr.ru/post/211204


Qwt – графическая библиотека, позволяющая значительно упростить процесс визуализации данных в программе. Упрощение заключается в следующем: нет необходимости вручную прописывать элементы отображения, такие как шкалы координат, сетки, кривые данных и проч. Следует лишь задавать параметры этих элементов.

В части №1 (постепенно разрастающегося) цикла статей мы:
• подключили Qwt к Qt Creator;
• построили график;
• настроили оси координат;
• изменяли масштаб графика (приближали/удаляли его);
• перемещались по полю графика;
• отображали координаты рядом с курсором по щелчку мышкой.

В части №2 мы расширим функциональность нашего визуализатора:
• добавим строку состояния;
• сохраним координаты клика в переменных и отобразим их в строке состояния;
• добавим кнопку на панель управления;
• добавим на панель управления QwtCounter (поле для номера, значение которого можно изменять стрелками, см. картинку).
• зададим с помощью QwtCounter смещение графика x;
• нажатием на кнопку сместим график на ранее заданную величину х.

Примечание: В рамках этой статьи при добавлении элементов управления GUI не используется.

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

Свежие впечатления о BlackBerry 10 NDK

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

Последние две недели я снова копался в BlackBerry 10 NDK, так как один из моих клиентов попросил помочь ему. Я предложил адаптировать свой курс «введение в Qt» под платформу BlackBerry, а также порекомендовал следовать советам из моей серии учебных роликов про BB10 и Cascades, опубликованных в начале этого года на YouTube. Теперь мне хочется поделиться с вами моими свежими впечатлениями о BlackBerry 10 NDK. Кстати, я уже писал о моих первых экспериментах с BB10 NDK этой весной.

Внимание. Это вольный перевод заметки Йэнса Веллера. Перевод сделан для составления общей картины о текущем состоянии мира [BB10 + Qt]. Приятного чтения.
Читать дальше →

Использование библиотек QSerialDevice и Qwt для организации коммуникации с контроллером и отображения данных

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


В продолжение своей статьи «Простой электронный самописец» хочу поделится опытом создания терминала для сообщения с разработанным мной девайсом на основе библиотек QSerialDevice и Qwt, ну и естественно Qt. QSerialDevice работает с любым COM-портом (реальным или виртуальным) определенным операционной системой, поэтому не имеет значения каким способом контроллер подключен к ПК: непосредственно через адаптер UART->RS-232(MAX-232), через адаптеры UART->USB(FT-232, CP2101) или UART->Bluetooth(BTM-222), также можно, например, подключить Arduino-совместимое устройство (адаптер UART->USB уже напаян на плату). Qwt же — мощное средство отображения данных. Их общий плюс — кроссплатформенность, это же Qt, достаточно скомпилировать коды под нужной платформой — и все работает! Так что, кому интересно, прошу под кат!
Читать дальше →

Виртуальная клавиатура, или новые функции контекста ввода Qt

Время на прочтение1 мин
Охват и читатели4.3K
Привет. Хочу поделиться ссылкой на одну статейку, тема на русском языке нигде не освещена, да и на английском есть только один пример из состава Qt, но тем не менее думаю многим было бы интересно почитать нечто полезное по сабжу. Фишка в том, что описываемый метод создания виртуальной клавиатуры не использует самописные костыли для определения попадания курсора в какое либо из полей ввода и отработки необходимости показывать/скрывать виртуальную клаву, а пользует новый API контектсов ввода Qt, созданный давным давно и расширенный в версии 4.6 некоторыми плюшками… В общем смотрим, ругаемся, комментируем =)

qt.e-werest.org/blog/tutorial/2939.html

К сожалению:
1) Не могу опубликовать просто пост-ссылку, ибо чуток кармы не хватает.
2) Делать перепост по правилам не желательно, да и подсветить нормально код в хабравском редакторе та ещё задачка.

Работа с сокетами в Qt

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

Введение


image
Как-то несколько лет назад, на одном из форумов, я нашел такую замечательную фразу — «Каждый уважающий себя программист в жизни должен написать свой чат-клиент». Тогда мои знания не позволяли сделать это. Я просто улыбнулся и прошел мимо этой фразы. Но вот совсем недавно я столкнулся именно с данной проблемой — нужно было написать свой чат. Ну а так как последнее время мой интерес был направлен на изучение и разработку Qt-приложений, на чем будет сделан он, решилось само собой.
Читать дальше →

Собираем Qt приложения для Symbian'а из-под linux'а

Время на прочтение3 мин
Охват и читатели3.1K
На этот раз собирать будем практически полностью нативными средствами, не используя Nokia remote compiler
Данный метод проверялся на Gentoo-amd64, в результате чего были получены вполне рабочие sis файлы. Огромным преимуществом при сборке из под Linux'а является то, что используется родной make, а не мутная утилита под названием abld. В результате мы получаем такие преимущества, как:
  • Многопоточность
  • Отсутствие лишних шагов в виде обсчета всех зависимостей
  • Отсутствие зависимости от тормозного active perl'а

В итоге скорость сборки увеличивается в разы!
Читать дальше →

Url to PDF. Легко и без проблем

Время на прочтение1 мин
Охват и читатели6.5K
Всем здравствовать.
Давеча был замечен мною интересный пост про замечательный сервис с говорящим адресом: pdfmyurl.com
И родилась мысль написать об альтернативном, более интересном способе (особенно интересном для программистов, энтузиастов и просто любящих консоль людей). Точнее, о проекте, позволяющим делать то же самое, не используя сторонний сервис.
Что же за проект?

Разработка на Qt для Symbian S60 официально доступна

Время на прочтение2 мин
Охват и читатели5K
Очень долго ждал официального релиза Qt 4.6.0, так как Тролли обещали поддержать официально разработку под S60 на Qt. Пока существовал Developer Preview — разработчик мог писать приложения для S60, но не существовало никаких механизмов для предоставления приложений конечному потребителю (то-есть пользователю).
image
image
На момент выхода релиза 4.6.0 обещали эту ситуацию поправить, и в форумах и в переписке тролли отвечали на вопросы касающиеся «deploy»'у (очень не нравится мне русский аналог этого слова: «развертывание» ) приложений на устройства так: «В пред релизе этого нет, ждите официального релиза. Там всё будет!».

Что же изменилось с выходом официального релиза?
Читать дальше →

Приватные слоты в паттерне Pimpl от Qt

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

Вступление.


Недавно я писал по поводу реализации паттерна Pimpl в библиотеке Qt и призывал людей следовать такому подходу при разработке их собственных бибиотек. Теперь я хочу поговорить о таком понятии, как приватные слоты и тем самым продолжить эту тему. Заключительной статьей на эту тему будет реализация механизма Implicit Sharing и shared d-pointer.

Что это и зачем это нужно.


Приватные слоты — это механизм дополняющий функционал d-указателей. Он позволяет реализовать слоты для приватного класса, даже если он не является наследником от QObject (обычно он им и не является), но для этого публичный класс должен быть наследником от QObject. Тоесть по факту создается некий приватный слот в публичном классе и он непосредственно дергает нужный метод приватного класса.
Зачем это нужно? Ну рассмотрим на примере. Есть класс QAbstractScrollArea. Он просто отображает некий виджет (viewport) и обеспечивает прокрутку. Прокрутка обеспечивается с помощью двух экземпляров класса QScrollBar. Сами эти скролбары он хранит в приватном классе. Теперь проблемма: как подключить сигнал от скроллбара об изменение его позиции с классом QAbstractScrollAreaPrivate, ведь он не является QObject'ом? Сделать его наследником от QObject — лучше не делайте это :-). Можно сделать слот в публичном классе и повесить на него, то в таком случае это не очень красиво — так как наружу выходят слоты от внутренней реализации. Вот ту Qt-шниками был придуман достаточно разумный и элегантный подход — приватные слоты.

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

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

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

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

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

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

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

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

Играем в Тетрис в AR

Время на прочтение10 мин
Охват и читатели6.6K
Пришла мне в голову немного странная мысль, что дом мог бы быть неплохой площадкой для игры в Тетрис. Недалеко от меня как раз располагалось одно подходящее для этого здание. Результат можно увидеть на видео:


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

Исходный код

Закруглённые изображения на Qt Quick Scene Graph

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

Я использую Qt в разработке уже более 6 лет, из них последние 3 года для создания приложений под Android и iOS на Qt Quick. Моя приверженность этому framework'у обусловлена двумя причинами:


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

К примеру, в Qt Quick есть компонент Image, который размещает изображение в интерфейсе. Компонент имеет множество параметров: расположение, способ масштабирования, сглаживание и др, но нет параметра radius для скругления изображения по углам. В то же время круглые изображения сейчас можно встретить, практически, в любом современном интерфейсе и из-за этого возникла потребность написать свой Image. С поддержкой всех параметров Image и радиусом. В этой статье я опишу несколько способов сделать закруглённые изображения.


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

Релиз Qt 5.4 и Qt Creator 3.3

Время на прочтение5 мин
Охват и читатели39K
Примечание переводчика: в оригинале очень много маркетинговых оборотов, и, похоже какой-то SEO в тексте. Я постарался местами убирать лишние повторы слова «Qt», но текст всё равно слегка слащав.
Про релиз Qt Creator 3.3 перевод.


Я рад сообщить, что Qt 5.4 выпущен сегодня (10 декабря) и уже доступен для скачивания с qt.io. Вместе с Qt 5.4, мы также выпускаем Qt Creator 3.3 и обновление для Qt для создания устройств под управлением встроенными Linux или Android.

Но сперва давайте о Qt 5.4. Один из главных акцентов, которые я бы хотел сделать на релезе — это Web-технологии, и мы можем показать вам много клевых штук.

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

Игра «жизнь», Хаос, «чёрный лебедь», этногенез и как все это связанно

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

Я довольно давно на Хабре. Просматривая старые рейтинги заметил, что люди неравнодушны к игре «жизнь». В связи с этим решил поделиться своей версией этой игры.

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

image

Кому интересно прошу под кат…
Читать дальше →

Кросскомпиляция Qt-4.8.0 под mingw32 (x86) в Gentoo (x86_64)

Время на прочтение5 мин
Охват и читатели5.4K
image
Нет никакой необходимости устанавливать Qt заранее на целевую систему, не нужно тянуть предварительно скомпилированные библиотеки для Windows.

Я проделал данный трюк на двух платформах, на Gentoo x86_64 установленной на VitualBox c оболочкой KDE 4.8 и соответвующими библиотеками Qt, и на домашнем сервере Gentoo x86_64 (Intel® Core(TM) i5 CPU 760 @ 2.80GHz) без какой либо графической оболочки и без предустановленных библиотек Qt.
Читать дальше →

Как Visual Studio могла бы выглядеть с новым меню: делюсь GUI-шаблоном

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

Доброго времени года, уважаемые хабровчане! Я занимаюсь разработкой десктоп‑приложений с 2008 года. Наша компания делает специализированные продукты из области ЦОС (DSP), и GUI выглядит как нечто среднее между AutoCAD, Total Commander и Visual Studio. Не для домохозяек. Без видеоуроков и прочих туториалов особо не попользуешься.

В какой‑то момент мы пришли к необходимости полностью переработать меню наших приложений. Стало очевидно, что классическое меню в связке с панелью инструментов — это не лучшее решение. Когда количество уникальных функций (команд уровня меню) перевалило за сотню, то количество переросло в качество: пользователям стало все сложнее находить для себя требуемый, минимально достаточный work set. Особенно тяжко было новым пользователям. Хоть мы в исправности поставляли и видео‑уроки, и прочие туториалы, это не сильно помогало, поскольку далеко не каждый пользователь был согласен в них залезать. В общем, мы поставили себе задачу понизить порог входа в мир наших продуктов за счет изменения концепции меню.

И тут оказалось (внезапно), что развитие GUI в мире десктопа фактически стоит на паузе. Никто ничего нового особо не предлагает. Я пытался найти в окружающем мире какие‑то интересные gui‑шаблоны. Искал в литературе, искал в дистрибутивах известных desktop‑продуктов, поглядывал и на мобилки. Но нигде не нашел. Весь мир был слишком занят мобильной и веб‑разработкой. А гиганты десктопа (Adobe, Microsoft) были слишком связаны принципом «не трогай, если работает» (ну, или просто погрязли в собственном спагетти‑коде). Наконец, я перестал кого‑то ждать и сам сел за решение. И я его придумал и внедрил в нашу продуктовую линейку. И теперь хочу поделиться им с вами.

Чтобы мое решение было проще понять, я не буду его описывать на примере наших, узкоспециализированных программных продуктов ЦОС. Я просто покажу, как будет выглядеть всем известная среда разработки Microsoft Visual Studio, если применить к ней мой принцип формирования меню приложения.

Читать далее

Выносим за скобки настройки CMake

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

Каждый день я создаю множество однотипных проектов C++ с системой сборки cmake. И открывая проекты в IDE, каждый раз снимаю галочки с типа сборки, оставляя только Debug. А ещё меняю путь к папке сборки. Мелочь, а утомляет.

First time opening project without any preset. Qt Creator's Configure dialog image
Первое открытие проекта (без пресета)

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

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