Название: Несколько одинаковых по наполнению QGroupBox в форме Отправлено: burenkov от Июль 10, 2016, 10:51 Делаю приложения для настройки некой железки, на ней 12 кнопок, каждую из которых можно конфигурировать произвольным образом, настройки для всех кнопок одни и те же. Настройки для каждой кнопки находятся внутри QGroupBox. Нарисовал в дизайнере UI файл, но хорошо бы сделать это по-человечески, описав один QGroupBox со всеми внутренностям, и потом просто реплицировать. Чтобы при добавлении нового параметра делать изменения только водном месте, и чтобы в обработчике можно понять из какого именно QGroupBox пришел сигнал. Как вообще такое обычно делается?)
Скрин окошка прикрепляю Название: Re: Несколько одинаковых по наполнению QGroupBox в форме Отправлено: Bepec от Июль 10, 2016, 12:06 Пара вариантов.
1) сделать свой виджет, в виде групбокса с сигналами об изменении и прочим. Тогда вам нужно будет менять только 1 виджет и один обработчик на основной форме. 2) создавать всё динамически. Тогда вам нужно будет править код конструктора и опять таки обработчик на основной форме. 3) создать скриптовый движок, в котором данный виджет будет описываться пользовательским скриптом. Тогда вам нужно будет только править реакцию движка. Название: Re: Несколько одинаковых по наполнению QGroupBox в форме Отправлено: Igors от Июль 10, 2016, 13:27 Делаете один класс виджет MyGroupBox и создаете его N раз. В виджет записываете напр индекс по которому можно его опознать - чему он соответствует в данных. Когда пришел сигнал от кнопки - извлекаете индекс, напр так
Код Вот правда в дызайнере нарисовать этот MyGroupBox не получится. Ну там контролов немного, можно и руками Название: Re: Несколько одинаковых по наполнению QGroupBox в форме Отправлено: Old от Июль 10, 2016, 13:46 Вот правда в дызайнере нарисовать этот MyGroupBox не получится. Ну там контролов немного, можно и руками Почему не получится - очень даже получится.Название: Re: Несколько одинаковых по наполнению QGroupBox в форме Отправлено: Bepec от Июль 10, 2016, 15:18 Мало того, спокойно рисуется, 1 раз компилируется, а потом просто берётся файл ui_названиеформы.cpp и выдирается оттуда конструктор. И всё в порядке :)
Название: Re: Несколько одинаковых по наполнению QGroupBox в форме Отправлено: Old от Июль 10, 2016, 15:38 Мало того, спокойно рисуется, 1 раз компилируется, а потом просто берётся файл ui_названиеформы.cpp и выдирается оттуда конструктор. И всё в порядке :) Для чего что-то выдирать? А если позже понадобиться его изменить, опять повторять этот изврат? Чем ui не угодил?Название: Re: Несколько одинаковых по наполнению QGroupBox в форме Отправлено: burenkov от Июль 10, 2016, 16:35 Делаете один класс виджет MyGroupBox и создаете его N раз. В виджет записываете напр индекс по которому можно его опознать - чему он соответствует в данных. Когда пришел сигнал от кнопки - извлекаете индекс, напр так Код Вот правда в дызайнере нарисовать этот MyGroupBox не получится. Ну там контролов немного, можно и руками Спасибо, буду пробовать! рисовать в дизайнере или ручками, пока не принципиально.. мне бы с общим flow, так сказать, разобраться) Название: Re: Несколько одинаковых по наполнению QGroupBox в форме Отправлено: Bepec от Июль 10, 2016, 18:26 Это 2 разных подхода.
C ui и без ui :) В случае c ui мы получаем удобство редактирования. В случае без ui мы получаем "всё в одном файле", без зависимостей. Название: Re: Несколько одинаковых по наполнению QGroupBox в форме Отправлено: Old от Июль 10, 2016, 19:10 В случае без ui мы получаем "всё в одном файле", без зависимостей. А мы и с ui получаем "все в одной коробке", только из 3 файлов, вместо 2. Название: Re: Несколько одинаковых по наполнению QGroupBox в форме Отправлено: burenkov от Июль 10, 2016, 19:52 Это 2 разных подхода. Я правильно понимаю что можно сделать кастомный виджет, используя дизайнер, а потом этот виджет так же в дизайнере использовать в моем приложении? C ui и без ui :) В случае c ui мы получаем удобство редактирования. В случае без ui мы получаем "всё в одном файле", без зависимостей. Название: Re: Несколько одинаковых по наполнению QGroupBox в форме Отправлено: Bepec от Июль 10, 2016, 20:06 Да, вам достаточно будет просто поместить пустой QWidget на окно и в контекстном меню выбрать "Преобразовать в ...". Там вбиваете имя своего класса и если cpp и h имеются в наличии, он будет преобразован.
Правда, отображения вроде не будет (хотя я давно этим не занимался), будет просто пустой прямоугольник, но вы сможете делать с ним всё, что хотите. PS чтобы видеть заместо пустоты сам виджет, это уже надо будет собирать плагин к дизайнеру с вашим классом. PPS причем креатору плагины дизайнера не подходят и наоборот :D Название: Re: Несколько одинаковых по наполнению QGroupBox в форме Отправлено: burenkov от Июль 10, 2016, 20:18 Да, вам достаточно будет просто поместить пустой QWidget на окно и в контекстном меню выбрать "Преобразовать в ...". Там вбиваете имя своего класса и если cpp и h имеются в наличии, он будет преобразован. Спасибо, попробую!Правда, отображения вроде не будет (хотя я давно этим не занимался), будет просто пустой прямоугольник, но вы сможете делать с ним всё, что хотите. PS чтобы видеть заместо пустоты сам виджет, это уже надо будет собирать плагин к дизайнеру с вашим классом. PPS причем креатору плагины дизайнера не подходят и наоборот :D |