Последнее обновление:
August 9, 2018

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

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

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

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

Views :

36

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

И вот наконец-то и мне потребовалось, да не просто для понтов и потому что мейнстрим, а реально пиздецки потребовались тесты, ибо говнокодить над проектом стал не только я один.
И так, имеем проект с подпроектами. Хотим тесты. 
Следуя мануалу Qt нужно создать новый проект Unit test, в нём класс для теста, с помощью мастера создания Qt сделает […]

Views :

171

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

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

Views :

191

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);
[…]

Views :

90

Компиляция libav для поддержки h264 видео.

Привет! 
Понадобилось мне в одном из проектов декодировать h264 поток, думал обойдусь без сторонних либ, глянул спеку на 300 страниц и передумал, нашёл библиотеку libav, у которой очень много фич по декодированию аудио и видео. 
Ок, компилируем:
sudo apt-get install libx264-148 libx264-dev #148 замените на актуальную версию
cd ~/Projects/libav
git clone git://git.libav.org/libav.git
./configure —enable-libx264 —enable-gpl —disable-x86asm —enable-shared
make
make install
Вот как-то так, думал […]

Views :

42

Печатаем из Qt на онлайн фискальнике ККТ PAYONLINE-01-ФА

В связи с очередным злоебучим ёбаным (по моему мнению) законом 54-ФЗ пришлось клиентам резко обновлять кассы и выкидывать из своего кармана 40 штук, что бы поменять шило на полноценный анальный зонд.
Я бы да же этому был бы рад из-за возможности заработать на обновлении, но вот что-то радоваться чужому горю вообще не фонтан.
В общем, подключаем приблуду […]

Views :

124

QEventLoop and connect/disconnect lambda function

Приветствую!
Кому некогда, можно сразу прыгнуть в конец к итогу.
Бывают ситуации, когда нужно синхронно дождаться завершения асинхронного действия, при этом не подвешивая основной поток (например, не продолжать выполнение функции, пока ответ в QTCPSocket onReadyRead от сервера не придёт).   
В нашем случае для примера давайте подождём с выполнением функции, пока таймер не досчитает до 5. 
Делаем основу:
#ifndef APPCORE_H
#define […]

Views :

284

Layout.fillWidth: true и Layout.preferredWidth/Layout.minimumWidth зависимость (очередная хитрость)

Сталкиваюсь иногда с некоторыми хитростями в QML, о которых, по всей видимости, приходится только догадываться, ибо то ли я проглядел это в документации, то ли этого действительно в ней не указано.
Так вот, задача: нужно три колонки одинаковой ширины.
Делаем:
import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Layouts 1.3

Window {
visible: true
width: 640
[…]

Views :

86

Конвертер картинок для Arduino LCD OLED 128×64 I2C дисплея

Пришёл вот такой дисплейчик:

Но вот нигде не нашёл для него генератора, что бы модно было конвертировать jpg/png/bmp картинку в код. 
Неспешно накалякал, выбираете любой jpg/bmp файл и получаете на выходе код:
Тестовый скетч:
#include <OLED_I2C.h>

OLED myOLED(A4, A5, A4);

extern uint8_t SmallFont[];

//—PASTE GENERATED CODE HERE

void setup()
{
myOLED.begin();
myOLED.setFont(SmallFont); […]

Views :

1065

Компиляций libusb из исходников на Windows

Тут особо нечего рассказывать, всё не так трудно, поэтому минимум комментов.
Качаем MSYS2, ставим, запускаем  C:\msys32\mingw32.exe
pacman -Syu
pacman -Su
pacman -S git
pacman -S base-devel
pacman -S libtool
pacman -S mingw-w64-i686-toolchain

touch /e/LibUSB2
cd /e/LibUSB2/
git clone https://github.com/libusb/libusb .
./autogen.sh
touch build-Win32
cd build-Win32
touch bin
../configure —prefix=/e/LibUSB2/build-Win32/bin —build=i686-w64-mingw32 —host=i686-w64-mingw32
make -j4
make install
Вся либа будет в /e/LibUSB2/build-Win32/bin.
Вот как-то так =)

Views :

154