Речь пойдет об объектах, используемых в C++ и QML одновременно, верхушкой иерархии наследования которых является QObject. Насколько мне известно, реализации механизма автоматического контроля времени жизни таких объектов на уровне библиотеки не существует. Подобный механизм избавил бы от сложностей, возникающих при ручном контроле времени жизни объектов, а так же от потенциальных багов, утечек памяти и крешей приложения. В этой статье я опишу этапы реализации данного механизма, а так же проблемы, рассмотренные в процессе исследования данной проблемы.
Читать полностью »
Рубрика «qt» - 17
Автоматический контроль времени жизни общих C++-QML объектов
2016-01-12 в 9:45, admin, рубрики: c++, QML, qt, smart pointers, ПрограммированиеСкриншотим игры — the hard way
2016-01-01 в 18:38, admin, рубрики: c++, DirectX, dll injection, hook, OpenGL, qt, qt5, Программирование, скриншоты Ну что такого сложного может быть в создании скриншота? Казалось бы — позови функцию, любезно предоставленную операционкой и получи готовую картинку. Наверняка многие из вас делали это не один раз, и, тем не менее, нельзя просто так взять и заскриншотить полноэкранное directx или opengl приложение. А точнее — можно, но в результате вы получите не скриншот этого приложения, а залитый черным прямоугольник.
Читать полностью »
Сегодняшняя статья вдохновила меня поделиться своим способом вынесения баз данных в отдельный тред. Способ подходит не только для БД, но и для любых взаимодействий, описываемых паттерном «в отдельном потоке живёт какой-то объект, надо у него что-то спрашивать и что-то с ним делать». Кроме того, способ хорош тем, что он пытается быть типобезопасным и расширяемым: никаких stringly-typed QMetaObject::invokeMethod()
, никаких передач результатов дёрганья объекта в потоке через сигналы. Только прямой вызов функций, только QFuture
!
Читать полностью »
QThread + QtSql: Асинхронные запросы
2015-12-22 в 5:54, admin, рубрики: >:3, c++, multithread, qt, sql, threadПри написании многопоточных приложений на Qt многие сталкивались с тем, что реализация QtSql строго однопоточная. Что хуже, в ней нет ни единого метода для фонового выполнения запроса. А если запрос большой или просто долгий, выполнение его в основном потоке намертво подвесит интерфейс.
Что нервирует ещё больше, нигде нет хоть сколько-нибудь жизнеспособной реализации такой, казалось бы, нужной вещи. Максимум, который можно найти — пул соединений, работающий вполне синхронно. Что ж, время течёт, всё меняется.
Читать полностью »
Cобираем qt-4.8.7 и qt creator при помощи mingw-w64 на windows (10), бонусом настравиваем на работу с github
2015-11-29 в 17:39, admin, рубрики: creartor, Git, github, mingw-w64, qt, windows, Программирование, Софт Пару слов о том для чего это понадобилось вообще: у меня была простая ситуация — не было быстрого интернета и был компьютер с начисто установленной windows 10. К тому же проект, который ковыряю, требует сборки как под 32 так и под 64 битную архитектуру, поэтому мне показалось что наличие Qt, одинаково сконфигуренного и скомпилированного под эти архитектуры будет только плюсом.
Читать полностью »
Bindings QCustomPlot для Python
2015-06-20 в 12:38, admin, рубрики: c++, python, qt, qt5 python PyQt5, метки: qt5 python PyQt5Добрый день, читатели!
Введение
В свободное от работы время увлекся написанием приложений на PyQt5. И свой давний проект по ведению домашней бухгалтерии MyWallet решил в конце мая переписать с плюсов на Python, так как в предыдущей версии были допущены ряд архитектурных ошибок, которые на хотелось исправлять. Поэтому собрав PyQt5 из исходников под Fedora 21, где-то за две недели реализовал весь функционал, который был ранее. И теперь встает вопрос в визуализации данных по расходам/доходам помесячно. Так как имел опыт визуализации данных с помощью QCustomPlot , хотел визуализацию сделать с помощью этой либы. Но к огорчению, не нашел биндов.
Шаблон для быстрого старта на Arduino Due в QtCreator
2015-06-19 в 12:47, admin, рубрики: arduino, c++, qbs, qtВот уже 3-й год как я нарадоваться не могу на Qt. В нем нахожу только достоинства. Он позволяет почти все. А что не позволяет, но очень надо — можно добавить и пользоваться. Так получилось и в этот раз.
Предыстория
Почему-то у меня к Arduino было отношение как к игрушке. До тех пор, пока не набрел на Arduino Due. Зацепила строчка в описании к модулю, что он построен на контроллере ATSAM3X8E (ядро Cortex M3). Дело в том, что с данным контроллером (вернее, с его младшей версией) я знаком не понаслышке.
Второе — и это заставило его уже купить — это цена. У меня есть опыт разработки железа на похожем контроллере (разрабатывал автомобильный трекер), и этот опыт настойчиво зашептал, что цена за модуль с доставкой в 15$ при стоимости только контроллера на Диджикее в 12$ — это очень выгодно. Бонусом шел интегрированный источник питания c диапазоном входного напряжения от 18В до 7В, 2 USB (Programming и Native).
Читать полностью »
История создания еще одного робота. Часть вторая, «it’s alive!»
2015-04-20 в 20:43, admin, рубрики: avr, DIY, diy или сделай сам, linefollower, qt, ЛУТ, программирование микроконтроллеров, роботы, Электроника для начинающих Продолжаю серию публикаций о создании простого колесного робота на микроконтроллере ATmega16A.
Во второй части моей публикации я опишу процесс создания и сборки своего робота. Начнем с изготовления печатной платы и закончим видео первых шагов (правильней сказать — прокручивания колес) нашего устройства. Также уделю внимание первому опыту программирования под PC в Qt, а именно созданию программы управления и обмена данными с роботом по Bluetooth.
Если хотите, можете ознакомится с первой публикацией и узнать с чего все началось, ну а всех остальных прошу под кат.
Читать полностью »
Hello android from qt
2015-04-13 в 8:31, admin, рубрики: android, c++, jni, qt, Разработка под android, метки: AndroidЭта статья о том, как подружить языки Java и C++ в одном приложение для операционной системы Android.
На С++ написано огромное количество кода. Мне хотелось бы как-то использовать этот код в своих приложения, но почему-то у меня процесс использования вызывал некий дискомфорт. Скорей всего, это, банально, было связано с тем, что основой моей рабочей средой является Android Studio, в которой работа с нативным кодом, скажем так, не самая лучшая. Но вот мысль о том, чтобы комфортно разрабатывать приложение с нативной частью не оставляла меня никогда. Поэтому я решил попробовать скрестить всю мощь библиотеки Qt и приложение, написаное на родном для Android языке — Java.
Читать полностью »