LINUX.ORG.RU

Сообщения kkmspb

 

Как сделать свой QTableView

В общем хочу поделится открыто классом QpTableView, который выводит ячейки в строке таблицы по шаблону в несколько рядов.

Небольшое видео для наглядности https://youtu.be/zgqkdXJhbpc?si=F0zMMr8oJgx69_47

По итогам работы понятно, что создавать свои виджеты на основе QAbstractItemView можно и нужно.

Но похоже придется из собирать свои виджеты в составе исходников Qt, что на самом деле не проблема (надо один раз попробовать только).

Надо сказать что на то, чтобы изучить исходный QTableView и QHeaderView и сделать свои варианты ушло 5 рабочих недель.

В основном время убило изменение ширины и высоты секций интерактивно мышкой (там отрисовка сразу идёт при перетаскивании края секции мышкой).

И ещё много ушло времени на модель выделения ячеек (selectionModel), что тоже оказалось не просто.

В общем, если кому интересно на гитхабе здесь: https://github.com/PavelDorofeev/How-to-create-own-QTableView-with-new-capabilities

 , ,

kkmspb
()

Как защитить программу, привязать к ПК

Тема не решаемая на 100%. Но опишу как получается на данный момент. Программа запускается на ПК и работает с сервером в интернете, соединяется с личным кабинетом и тогда проблем с защитой нет. Часть функционала мы отдаем с сервера. Но как быть если интернета нет?..

Локально есть база данных sqlite, точнее две базы: основная где товары и продажи товаров накапливаются и вторая, где хранятся пользователи и настройки оборудования. Идея в том, чтобы можно было грохнуть вторую базу и тогда придется регистрировать пользователей и оборудование заново, а для этого нужен интернет по любому.

Но в чем вопрос? Работа без интернета допустима, но не поощряется (нужен просто аварийный вариант на 1,2,3,4 дня вдруг сервак накроется и т.д.). Таким образом :

  1. хотелось бы, чтобы программа начала подтормаживать без интернета и в какой-то момент вставала колом. Потом перезагрузка опять поработали и хватит. Но тут хотелось бы как-то в логику конфигурации базы данных такой алгоритм заложить.

Надо сказать, что обе базы данных шифруются без проблем через sqleet. Более того есть вариант с шифрацией прямо в оперативной памяти через эмуляцию файловой системы (vfs + sqleet). Но речь о другом: пароль от расшифровки базы данных надо хранить на ПК локально, т.к. когда интернета нет - базу расшифровывать при запуске по любому как-то надо.

Думаю пароль от базы как-то привязать к паспорту компьютера, то есть к id процессора (правда их может быть не один) и/или к номеру материнки и/или RAM. И тогда не хранить пароль в явном виде ни где не надо…

В общем понятно, что ломануть программу можно любую (когда она локально работает), но прошу помощи у гуру как можно усложнить этот процесс, какие есть у кого может были варианты.

Заранее благодарен за любые варианты.

 , , , ,

kkmspb
()

Развитие QtSql направления

Вот небольшое видео сделал с демонстрацией новых возможностей работы с таблицами данных на Qt 4.8.1. Открытый свободный проект.

Сам использую в двух коммерческих проектах. Планирую развивать и поддерживать.

Может кому интересно будет.

https://youtu.be/vUrVNU1h_rY

 , , , ,

kkmspb
()

Qt 4.8.1 LGPL надо ли открывать исходный код своей программы (не исходников Qt)

Я извиняюсь наверное уже все сужено/пересужено. Но хочу спросить опять насчет лицензирования Qt. У меня прога под Windows (не пинайте сильно) на Qt 4.8.1.

Нокиа в 4.5 придумала LGPL. Если я принимаю LGPL,можно ли мне по «фен-шую» НЕ открывать исходный код на свою программу. Собирается конечно в Qt Creator с использованием Qt 4.8.1 библиотек QtGui,QtCore,QtSQl,QtNetWork,svg.

Боюсь поверить саму программу можно оставить закрытой (exe-шник)?

Сами исходники Qt немного правил (TLS1.2 добавлял) и проблем нет на сайте выложить эти так сказать патчи.

Да еще добавлю собирать все-таки люблю статически (x86).

И тогда можно ли программу оставить закрытой?

Примечание: живу и работаю в РФ.

 ,

kkmspb
()

Сборка отладка С++ под Андроид возможна?

Давно мучает вопрос почему (по моим данным) никто не отлаживает свои проекты прямо по андроид ОС.

Прошли те времена, когда смартфоны на ARM были слабыми.

Но по-прежнему Андроид Студия, кросскомпиляция, эмуляторы, удаленные отладчики…

Неужели это никому не надоело?

Может знает кто какие IDE для сборки С++ исходников прямо под Андроид?

 , ,

kkmspb
()

QSqlRelationalTableModel - что с ним не так

QSqlRelationalTableModel не позволяет получить доступ к id полю внешней связи и это создаёт очень много неудобств. Более того сама реализация этого класса весьма сомнительна и создаётся впечатление, что это не законченная поделка (будем говорить прямо).

Возможно вам тоже покажется, что развитие Qt как минимум в части Sql остановилось этак лет 15 назад.

А ведь фреймворк заслуживает развития ибо базовые классы уровня QSqlTabelModel и QTableView предоставляют богатый функционал для реализации ваших запросов.

Итак речь пойдет о версии Qt 4.8.1 (как ни странно), помните такую - Nokia connecting people.

Главная проблема в том, что фреймворк не так прост как кажется. Огромный объем кода, где каждая строчка имеет значение в буквальном смысле этого слова. Все по делу во всем надо разобраться и порог вхождения не пару лет месье…

Предлагаем вашему вниманию развитие классов QSqlTableModel/QTableView, с вашего позволения обзовем их PblSqlRelationalTableModel/PblTableModel. Префикс Pbl мы придумали от имени создателя Pablo (не Public как может показаться), но это все в общем-то неважно, главное отличать классы от родных Qt-ых.

Итак, что мы хотим? Мы хотим в нашем приложении на с++, которое работает с базой данных, QSlite3 к примеру, иметь возможность отрыть любую таблицу в диалоге и увидеть элементы управления: кнопки добавить, копировать, удалить строку. Также нам не помешает увидеть кнопки поиска по колонкам, отбор по значению поля, сортировку по колонке.

Но самое наверное заветное нам хотелось бы увидеть подстановку в поле с внешней связью текстовой замены поля id по данным другой связанной таблицы. И больше никогда не возвращаться к этой проблеме.

Ну и когда все уже начинает работать как надо нам, выясняется, что добавить вычисляемые поля к функционалу наших классов по данным других таблиц тоже не проблема.

https://github.com/PavelDorofeev/Fork-Sql-Qt-4.8.1--SQLite-3--relations--calc-fields

 , ,

kkmspb
()

RSS подписка на новые темы