Рубрика «qt» - 25

Qwt и Qt Creator. Часть 3: график как элемент Designer Form

В примерах использованы Qt Creator 3.0.0 (MinGW) и Qwt-6.1.0.

Для понимания этой статьи читатель должен иметь начальный опыт разработки windows-приложений в среде Qt Creator, понимать концепцию «сигнал-слот». Также рекомендуется познакомиться с частью №1 и №2 цикла моих статей про Qwt:

habrahabr.ru/post/211204/
habrahabr.ru/post/211867/

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

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

В части №3 мы сделаем следующее:

• добавим виджет для отображения графика в Designer Form, что позволит использовать элементы управления Qt Creator;
• построим демонстрационную кривую, реализуем базовые удобства работы с графиком: возможность перемещения по полю графика, его приближение/удаление, отобразим координаты курсора при его перемещении;
• отобразим координат клика в строке состояния Designer Form;
• переместим кривую вдоль оси х, используя стандартные элементы управления из Qt Creator.

Читать полностью »

Или независимые управляемые формы графического интерфейса.
Управление графическим интерфейсом с помощью echo и cat
Читать полностью »

Представляю ещё один свой проект, на этот раз, — opensource (лицензия GPLv3).
QML Particle Editor — редактор частиц, десктопное приложение, написанное целиком на QML.
image
Не знаю, как вы, а я Qt Quick Designer (известный также, как qml2puppet) обычно не использую, глючный он, да и руками мне удобнее писать. Беглый обзор показал, что для работы с частицами QML до сих пор ничего специфичного нет и не ожидается, поэтому за время новогодних праздников запилил свой редактор.

Зачем это нужно? Удобнее изменять свойства и тут же видеть результат, чем вслепую править код и гадать, почему внешне ничего не изменилось. Само собой, для того, чтобы делать крутые штуки вроде тех, что лежат в демо-приложенях, придётся вникнуть во взаимосвязь компонентов и разобраться в свойствах, без этого не обойтись. Хотя, основу, например, можно набросать в редакторе, а плюшки вроде ColorAnimation on color прописать уже руками, так как всё, что делает мой редактор — позволяет создать сцену и получить её QML код, который сразу можно использовать в любом проекте.

Подробности реализации и ссылка на репозиторий — под катом.
Читать полностью »

Melange — DSL для сетевых протоколовВсем программистам рано или поздно приходится передавать данные. Ни для кого не секрет, что библиотек сериализации в Java существует примерно >9000, а в C++ они вроде и есть, а вроде их и нет. К счастью для большинства, несколько лет назад появился Google Protobuf, который принёс достаточно удобный способ определять структуры данных и быстро завоевал всенародную любовь. Это была фактически первая, доступная широким массам библиотека, позволяющая гонять по сети готовые структуры данных, не связываясь при этом с чем-то вроде XML. На дворе был 2008 год.

Вернёмся немного назад. В 2006 году простой индийский программист (как бы подозрительно это ни звучало!) Анил Мадхавапедди, один из самых известных сейчас в мире OCaml-разработчиков и автор свежевышедшей книги Real World OCaml, защищал в Кембридже кандидатскую диссертацию. Именно о ней я сегодня вам и расскажу.

Анил сразу пошёл дальше, чем Google. Он сразу подумал, для чего люди обычно пересылают по сети какие-то формализованные структуры данных? Чтобы реализовать какой-то протокол. А что такое протокол? Это какой-то конечный автомат. А где мы можем взять хороший пример сложного, хорошо спроектированного и проверенного временем протокола? Да прямо в обычном сетевом стеке! Итак, были взяты набор сетевых структур данных и протоколов: Ethernet frame, IPv4, ICMP, TCP, UDP, SSH, DNS и DHCP и постановка задачи: большая часть этих протоколов (особенно SSH и DNS) реализуются, что называется «руками», а хочется, чтобы не было типичных для C переполнений буфера, все переходы совершались автоматически, это всё можно было верифицировать, и чтобы работало быстро, а не как обычно.

Поскольку никто не будет читать диссертацию, сразу скажу: это более чем удалось. По результатам работы были написаны референсные реализации DNS и SSH-сервера и произведено сравнение с BIND и OpenSSH. OCaml-реализации давали по сравнению с традиционными прирост производительности от незначительного, до почти двухкратного. Кроме того была найдена ошибка в RFC на SSH (рабочая группа была уведомлена и RFC исправлен). О том, что было сделано, и как с этим жить, читайте под катом. Читать полностью »

Qt 5.2.0 вышел в свет!

Habrahabr::instance()->sup(tr("Good morning, %1").arg(username));

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

Qt — кросплатформенный фреймворк для разработки приложений и пользовательского интерфейса на С++ с использованием технологий QML (декларативного языка на манер JavaScript & CSS). Ранее поддерживался Trolltech, пока его не купили Nokia, которые продали его Digia — замечательной компании, которая открывает кьюту невероятные возможности.

  • Полноценная поддержка Android *
  • Полноценная поддержка iOS *
  • Десктопные Qt Quick Controls доработаны
  • Баги виджетов исправлены (+ пара новых няшных элементов)
  • Qt Windows/Mac Extras — интеграция с нативным кодом для этих платформ
  • Поддержка Bluetooth на Linux
  • Увеличена производительность рендера Qt Quick (QML)
  • Множество фиксов для OS X Mavericks
  • Модуль Accessibility доступен и на Android

* — за исключением пару очень узких функций, которые недоступны из-за лицензий/правил/etc

Полный текст релиза: blog.qt.digia.com/blog/2013/12/12/qt-5-2-released-the-best-qt-yet/
Узнать все о вкусняшке и скачать ее, собсно, можно тута: qt-project.org/

P.S. В голове не уложилось, когда позавчера собрал свое десктопное qml приложение под Android, затем под iOS-cимулятор и все это добро работало — начинается новая эра...
Читать полностью »

Эта статья является перевод статьи OpenGL in Qt 5.1 — Part 1 и Part 2

Часть 1


Эта статья является первой в серии. Она покажет, как использовать OpenGL в Qt 5. В этой статье будет краткий экскурс в историю поддержки OpenGL в Qt. Затем мы перейдем к описанию первой части новых возможностей, которые вошли в Qt 5.1. Последующие статьи будут содержать описание большего количества возможностей, а так же будут приведены несколько простых примеров того, насколько легко можно использовать Qt для работы с OpenGL.

Читать полностью »

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

12 ноября число платформ, на которых есть 2ГИС, пополнился ещё одной — Blackberry 10.
2ГИС для Blackberry 10

В связи с этим знаменательным событием, хочется поделиться некоторыми моментами, связанными с опытом портирования.
Читать полностью »

Организация Make·Play·Live, занимающаяся проектированием устройств с философией OpenHardware, представила свою первую разработку: двухплатный модульный компьютер, предназначенный для разработчиков.

image
Читать полностью »

В своей предыдущей статье я затронул тему грамотной реализации потоков в Qt и предложил свой вариант. В комментариях мне подсказали более верное направление. Попробовал сделать — получилось и вправду легко и красиво! Я хотел было исправить старую статью, но Хабр повис — и все потерялось. В итоге я решил написать новую версию.
Читать полностью »

Всем хабрапривет!
Как-то понадобилось мне в Qt 5.1.1 для WinXP в VS2009 реализовать многопоточное приложение с интенсивным обменом сигналами. Взял я Шлее, вычитал у него, что нужно унаследовать класс от QThread и — вуаля, велком в многопоточность! На всякий случай заглянул в документацию Qt — там никто не возражал против наследования от QThread своего класса. Ну что же — порядок, сделано! Запускаю — вроде как работает, но как-то не так… Начинаю в режиме отладки отслеживать — а там творится черт знает что! То сигналы не выходят, то выходят, но как-то криво и из другого потока. Одним словом, полный бардак! Пришлось основательно по-google-ить и разобраться в теме (мне помогли статьи тут, здесь и там). В итоге я сделал шаблон класса на С++ (вернее, целую иерархию оных), что мне позволило в итоге писать (относительно) небольшой код класса, живущего в другом потоке, который работает правильно и стабильно.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js