![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
JohnZ |
![]()
Сообщение
#1
|
Участник ![]() ![]() Группа: Участник Сообщений: 139 Регистрация: 19.7.2014 Пользователь №: 4190 Спасибо сказали: 10 раз(а) Репутация: ![]() ![]() ![]() |
Всем Здравия !
Прошу прощения если не в том разделе спрашиваю, не знаю к какому разделу мой вопрос отнести. Проблема следующая. На данный момент, если на форме н-ное количество битовых полей, которые в БД упакованы в один short/int, то приходится делать следующее: 1. Ложим на эту форму скрытый QSpinBox, который хранит полное значение short/int и связывается с полем БД QDataMaper-ом. 2. Так-же на форме ес-сно присутствуют QCheckBox-ы в н-ном количестве, и ес-сно с разными именами, что-бы их потом можно было отличить из скрипта. 3. При открытии или закрытии формы, соответствующие функции скрипта распаковывают / упаковывают значения из QCheckBox-ов в значение в QSpinBox-е. Каждый контрол на форме имеет свой уникальный Idd (динамические св-ва в QT-дизайнере) , по которому он и мапится в БД. Ес-сно QCheckBox своего Idd не имеет, (на картинке показан для примера), за исключением случая если он один соответствует одному полю short/int в БД. Дык вотЪ, хотелось-бы добавить на форме QCheckBox-у доп. динамическое св-во Bit (см. в прицепе. Скрытый QSpinBox справа в строке битовых полей) и обойтись БЕЗ вызова СКРИПТОВЫХ функций, и соотв-но без НЕОБХОДИМОСТИ их написания для форм с упакованными битовыми полями. Any ideas ? Если нужны куски исходников - выложу, но думаю и так понятно ... Помогите plz кто сталкивался или в курсе. Может уже где-то решалось что-то подобное ?! QT 4.8.6 Удачи ! Сообщение отредактировал JohnZ - 8.4.2021, 17:16 |
|
|
![]() |
Алексей1153 |
![]()
Сообщение
#2
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
Дык Дизайнер его и так, за безплатно отображает . Промоушен работает - им пользуюсь почему-то у меня не отображает. И никогда это не работало. Может - это было в старых креаторах? У меня сейчас QtCreator 4.13.2 специально попробовал сделать класс со свойствами, сделал промоушен. Нифига в свойствах в таблице не отобразилось
но, допустим, у тебя это работает, ок. Нужен умный масив в объекте, который скармливаем dataMapper-у, и он будет хранить Idd и указатели на QCheckBox-ы на форме. что имеется в виду? Нужно в рантайме собрать в одну таблицу список значений этих свойств у всех контролов? |
|
|
JohnZ |
![]()
Сообщение
#3
|
Участник ![]() ![]() Группа: Участник Сообщений: 139 Регистрация: 19.7.2014 Пользователь №: 4190 Спасибо сказали: 10 раз(а) Репутация: ![]() ![]() ![]() |
Алексей, Вот теперь я понял, что моя <--> твоя не понимайт
![]() Перечитай первую месагу. Видимо я там чего-то упустил ... Вот смотри, в QT-Дизайнере я сделал форму, на которой лежит куча QCheckBox-в, которые в БД находятся в ОДНОМ поле, т.е. по-сути упакованы в один INT. Каждому QCheckBox-у я добавил дин-е св-во Idd и Bit (на картинке обведены красным). Далее этот файл формы грузится в конфигурацию Конфигуратором. (показано на второй картинке) и далее уже Исполнитель выполняя полученную т.о. xml-конфигурацию, показывает эту форму, и читает/сохраняет значения в/из БД. Судя по "Промоушен работает - им пользуюсь." -> Как я тебя понял, ты полагаешь что я должен был *.h файл этой формы положить в Исполнителя чтобы эту форму показать и с ней работать ? Дык нет, всё сделано динамически, и если мне не изменяет склероз. то ты-же мне и подсказывал ( MVC & QDataWidgetMapper ) как это можно было-бы реализовать. Всю работу по обмену Модель <-> БД у меня выполняет QDataWidgetMapper (кусок исходника выше) но не устраивает dataMapper->addMapping(cb, x), т. к. нет доп. параметра, в который можно было-бы положить значение Bit ! Именно по этой причине приходится каждый раз делать это скриптом, а хотелось-бы что-бы Исполнитель (т.е. Платформа) делал эту работу так-же динамически, БЕЗ необходимости использования скрипта ![]() Сумбурно, но что-то типа этого, схематично ...
Цитата Нужен умный масив в объекте, который скармливаем dataMapper-у, и он будет хранить Idd и указатели на QCheckBox-ы на форме. что имеется в виду? Нужно в рантайме собрать в одну таблицу список значений этих свойств у всех контролов ? ИМЕННО ! Только видимо не в таблицу а массив, и в/из него упаковывть / расупаковывть значения в один uint32, который по-идее должен мапится QDataWidgetMapper-ом, но мы ему должны подсунуть на мапинг что-то типа того что выше ! QDataWidgetMapper не знает о том, что значения нескольких QCheckBox-ов упакованы в ОДИН uint32 ... Это сейчас делает скрипт ... Удачи ! Сообщение отредактировал JohnZ - 12.4.2021, 17:59 |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 17.2.2025, 0:33 |