Как добавить свой тип данных в QVariant для совместимости с VT_CY VARIANT от корпорации Майкрософт.
Речь о фреймворке Qt, решаем проблему с подключением ккт Штрих к программе на С++.
фулстек разработчик С, С++,PHP,JS
Как добавить свой тип данных в QVariant для совместимости с VT_CY VARIANT от корпорации Майкрософт.
Речь о фреймворке Qt, решаем проблему с подключением ккт Штрих к программе на С++.
Поводом написания этой маленькой статьи послужила странная ситуация, сложившаяся с настройкой сканеров штрих кода для работы с маркировкой в режиме именно клавиатуры.
Я думаю многие уже бились головой об стену не понимая как настроить сканер для корректной работы с маркировкой по ФФД 1.2.
Под корректной работой понимается, что считанный сканером код должен хотя бы распознаваться сначала корректно онлайн сервером ОФД и конечно далее сервером честного знака.
Суть проблемы в том, что в коде маркировка по формату Datamatrix присутствуют обычно 2 разделителя со значением 0x1d или их ещё называют GS.
Это управляющие символы, как они ещё применялись со времён программирования на перфокартах. Проблема в том, что они отсутствуют на клавиатуре визуально, располагаются в самом начале таблицы ASCII, и не имеют символьного представления. То есть в текстовом редакторе вы их просто так не увидите.
Да, надо отметить,развлекаемся со сканерами мы в Виндоус. На Винде, как я понял, USB драйвер клавиатуры всегда передавал сканкоды в соответствии с таблицей XT стандарта, где за каждой клавишей закреплёно конкретное значение.
USB драйвер всегда передает байты, как вы понимаете, и всегда от конкретной клавиши идёт одно конкретное значение (байт если хотите).
Так вот далее именно операционная система, настройки конкретного пользователя интерпретируют эти байты в соответствие с выбранной раскладкой клавиатуры или локалью и у нас появляются разные языки русский, английский и т.д. Но изначально из канала USB байты одни те же поступают.
Итак после первых плагинов для ВордПресс и джумла пришла пора сделать что-то похожее в Битрикс.
Наш путь познания разных движков для сайтов проходит под идеей принести новый функционал, а именно принятие оплаты по покупателя при самовывозе, то есть это либо наличными либо по банковской карте в момент, когда клиент приходит к вам в офис.
И вот так получилось, что свежие мозги прошлись по ВордПрессу, Джумла и теперь взялись за Битрикс.
Сразу хочу сказать, что привыкнуть можно к любой CMS, все дело в обстоятельствах и времени.
Главное отличие отечественной CMS - оплата вперед
Итак не нужные проблемы у Битрикс начинаются уже на этапе установки, разработчики как бы говорят вам - нафига ты сюда лезешь (это наша корова и доить ее будем сами).
Имеется ввиду, что так называемая демо версия (на месяц) виснет при установке и до конца ну никак не доходит.
Мы сначала подумали, что это потому, что мы устанавливаем на локалхост или потому, что это демо версия, но оказалось впоследствие, что так и должно быть. То есть и при установке демо и при установке нового сайта в рабочем Битриксе установка зависала на разных этапах по непонятным причинам.
После плагин на вордпресс решили написать такой же плагин для joomla, вроде как вторая по популярности система.
Итак эта статейка по горячим следам о том как написать свой первый плагин для движка какого-то сайта. И в данном случае поговорим о ВордПресс.
Эта статья для начинающих. В нашем случае мы считаем себя дилетантами в вэб разработке.
Решаем одну старую проблему с QMap. Есть многоуровневый QVariantMap, то есть один вложен в другой и так много раз. И надо иметь возможность изменять в любом месте иерархии ключ/значение.
Штатные возможности Qt 4 не предусматривают изменение части дерева, только полная перезапись целиком всей ветки дерева (в Qt5,6 не знаю).
Но у нас появилась реализация, выносим на ваш суд и делимся результатами.
Итак хочу поделится большой радостью ибо наконец-то сделал универсальное всплывающее окно (на Qt) для индикации (логгирования) хода выполнения каких-то долгих команд.
Основная идея универсальности в вызове у об'екта слота по наименованию , передача параметров через QVariant (до 10шт.), возврат результата тоже через QVariant.
Все это реализуется без проблем через вызов метода invokeMethod.
Через параметры QVariant мы можем передавать и возвращать все , что угодно - какие-то свои классы, главное не забыть в конце определения таких классов добавлять макрос Q_DECLARE_METATYPE(имя вашего класса)
Создаем свой кастомный стиль для QTableView без css стилей и переопределения ролей модели данных. Занимаемся отрисовкой напрямую.
Итак жил был фреймворк Qt и последние 10 лет ничего в нем не менялось. И захотел один чел написать свой QTableView с нужным ему функционалом, а именно захотелось ему выводить ячейки в несколько рядов (по горизонтали) в одной строке. Ещё ему хотелось растягивать одну из ячеек по ширине двух других.
Искал, искал чел готовый пример в интернете и не находил. И вот однажды подумал он посмотреть как сделан внутри сам QTableView и стало плохо ему от количества строк кода, не одна тысяча там.
Возможно вам тоже покажется, что развитие Qt как минимум в части Sql остановилось этак лет 12 назад.
А ведь фреймворк заслуживает развития ибо базовые классы уровня QSqlTabelModel и QTableView предоставляют богатый функционал для реализации ваших запросов.