Последнее обновление:
May 24, 2021

Есть мысль... Жми, напиши!
Программирование

Пишу о всем, что делаю, что получается, или нет)))

Прокси-контейнер в QML или implicitWidth/implicitHeight

Как известно, в QML, что бы элемент отображался, у него должен быть указан размер. Сделать это можно несколькими способами:Явночерез width/height или при работе с Layout через minWidth/minHeight, preferredWidh/preferredHeight, fillWidth/fillHeight Самое интересный, это не явный способ через implicitWidth/implicitHeight Интересен он тем, что если размер явно не указан, то он устанавливается равным implicitWidth/implicitHeight соответственно. Этакий «желаемый размер». […]

Views :

108

Разделение на отдельные пакеты байтового потока данных.

Потребовалось мне тут обеспечить общение двух девайсов (пусть будут, для упрощения, Ардуинки — тестировалось всё равно на них) через последовательный интерфейс, ака com-порт, он же rs232. Так как оба девайса имеют буферы на приём и отправку, то нет никакой гарантии, что если мы отправим 5 байт и сделаем небольшую задержку, то на другой девайс так […]

Views :

55

Qt QCoreApplication или EventLoop в DLL

Потребовалось мне создать динамическую dll для сторонней программы (не Qt). Разумеется, хотелось использовать все возможности Qt, а именно сигналы/слоты/QTCPSocket и прочее. Но для их работы нужна очередь событий (EventLoop), то есть либо QCoreApplication, либо QEventLoop. Но в dll этого нет. Можно, конечно, сигналы-слоты использовать с Qt::DirectConnect (прямой вызов), но тогда всё равно не будут нормально […]

Views :

153

Qt 5.12 + Android с чего начать или Hello World

Потребовалось в очередной раз обновить Qt для кросскомпиляции под Андроид. В моём случае разработка идёт под Линукс, но с Виндой, думаю, особых проблем не будет. Качаем Android SDK, для этого нужно скачать SDKManager. (На странице ищем «Command line tools only»), пока что не распаковываем. Рабочим каталогом у меня будет «~/Projects/ANDROID», все манипуляции будут отталкиваться от […]

Views :

218

Статическая сборка Qt 5.12 из исходников под Windows

Потребовалось мне тут, что бы Qt приложение было в одном exe.  Для этого придётся перекомпилировать Qt. Качаем: Git Качаем: Perl, версию 32х битную. Качаем: Python 2 (У меня 2.7). Качаем: MinGW, y меня 730 (для распаковки нужен 7Zip, запускать «C:\Programm Files (x86)\7-Zip\7zFM.exe»). Открываем консольку (Win+R, вводим cmd), прописываем необходимые системные переменные (пути замените на свои): Переходим […]

Views :

5177

Qt, вызов функции с ограничением по времени выполнения (QtConcurrent::run timeout).

Потребовалось в одном проекте в критическом к скорости выполнения месте дёргать функции сторонней библиотеки, но загвоздка в том, что эти функции внутри ещё и дожидаются результата в цикле/магия. Мне от неё важно только получить код ошибки (если сразу возник), другой результат не так важен (потом запрашивается отдельно). В общем задача: запустить функцию, по возможности дождаться […]

Views :

447

Вылеты Q_ASSERT(c->sender == q_ptr);

Появилась достаточно странная бага — вылеты при отладке и чуть реже при релизе с этой ошибкой. Сколько бы я не пытался выяснить конкретное место ошибки — везде был облом, пока не понял, что недавно одна из библиотек обновилась. Чтож, виновник теоретический найден, но вот поиски что именно не так доставило несколько геммора.  В общем причина […]

Views :

213

Модульное тестирование (Unit test) в Qt

Наконец-то и мне потребовалось, да не просто потому что мейнстрим, а реально потребовались тесты, ибо говнокодить над проектом стал не только я один. ВАЖНО:В данном случае мне потребовалось протестировать как работаем весь проект в ЦЕЛОМ, а не отдельные классы. То есть, по сути, симулировать те или иные действия не только в классах, но и в […]

Views :

1941

Использование интерфейсов классов в Qt и QML

Привет! Порою удобнее в QML работать именно с интерфейсом класса, а так же иметь возможность засунуть его в QVariant.   Разумеется простым способом в «лоб» не получится, т.к. Qt в QML работает с QObject, а мы от него не унаследовались и никакой информации для метасистемы не дали. Долго я копался в недрах метасистемы Qt, уж собирался […]

Views :

945

AVFrame(AVPicture) конвертация в OpenCV::Mat

Понадобилось тут мне сконвертировать  AVFrame в Mat для дальнейших издевательст с помощью OpenCV, загуглил я это дело, и нашёл кучу способов. Вот один из них: void AVFrameToMat(const AVFrame * frame, Mat& image) { int width = frame->width; int height = frame->height; image = Mat(height, width, CV_8UC3); int cvLinesizes[1]; cvLinesizes[0] = image.step1(); SwsContext* conversion = sws_getContext(width, […]

Views :

523