LINUX.ORG.RU

История изменений

Исправление CrossFire, (текущая версия) :

1. Если мой виджет, например - четыре кнопки в углах формы.
А на MainWindow должны быть эти четыре кнопки в углах и еще что-то в центре.
Я так понимаю, можно такое сделать только если ui у MyWidget - указатель в public.

Тут у вас нарушение инкапсуляции, так нельзя, он не зря в привате по-умолчанию.

Предположим, что нам нужно получить такую штуку — четыре кнопки по углам и произвольный виджет по середине.
Что мы делаем, самый наглядный вариант:
1) Создаем класс формы с четырьмя кнопками. Добавляем четыре метода на установку лейблов на кнопки. Добавляем четыре сигнала для отлова нажатий на них. Добавляем метод, принимающий указатель на QWidget, и вставляющий его в центр например QGridLayout'a.

2) Создаем еще класс, в котором любая логика (Worker). Создаем там центральный объект (Central). Создаем объект формы из пункта 1 (Form). Закидываем Central на Form, подписываемся на сигналы обоих и радуемся жизни.

2. Во-первых, свой виджет (что в случае с plugin, что в случае с promotion) - это картирка/набор разных виджетов.
Там может быть логика в любых количествах или это, мягко говоря, моветон?)

Да, конечно, может быть.

Исходная версия CrossFire, :

1. Если мой виджет, например - четыре кнопки в углах формы.
А на MainWindow должны быть эти четыре кнопки в углах и еще что-то в центре.
Я так понимаю, можно такое сделать только если ui у MyWidget - указатель в public.

Тут у вас нарушение инкапсуляции, так нельзя, но не зря в привате по-умолчанию.

Предположим, что нам нужно получить такую штуку — четыре кнопки по углам и произвольный виджет по середине.
Что мы делаем, самый наглядный вариант:
1) Создаем класс формы с четырьмя кнопками. Добавляем четыре метода на установку лейблов на кнопки. Добавляем четыре сигнала для отлова нажатий на них. Добавляем метод, принимающий указатель на QWidget, и вставляющий его в центр например QGridLayout'a.

2) Создаем еще класс, в котором любая логика (Worker). Создаем там центральный объект (Central). Создаем объект формы из пункта 1 (Form). Закидываем Central на Form, подписываемся на сигналы обоих и радуемся жизни.

2. Во-первых, свой виджет (что в случае с plugin, что в случае с promotion) - это картирка/набор разных виджетов.
Там может быть логика в любых количествах или это, мягко говоря, моветон?)

Да, конечно, может быть.