Для моего проекта мне нужна возможность создавать меньшие окна внутри основного окна. После прочтения документации, я нашел нативную их имплементацию - QMdiSubWindow.
Однако, у меня возникли проблемы с QMdiArea. Для начала, она по умолчанию непрозрачна, однако я легко смог решить это через прозрачную кисть:
subwindowArea->setBackground(QBrush(QColor(0, 0, 0, 0)));
Трудности начались дальше - QMdiArea не пропускает QEvent-ы на нижние виджеты, что в принципе ожидаемо.
Сначала я пробовал задать QMdiArea как центральный виджет с остальным интерфейсом в качестве детей. Не сработало, т.к. вторичные окна стали загружаться под виджетом камеры, блокируясь таким образом из вида.
Затем я ввел QMdiArea атрибут на прозрачность для мыши, однако после этого я уже не смог взаимодействовать (перемещать, закрывать) с тестовым вторичным окном.
subwindowArea->setAttribute( Qt::WA_TransparentForMouseEvents );
Ситуация осложняется еще и тем, что QMdiSubWindow - неполный класс и я не могу создавать его экземпляры или кастовать в него напрямую.
Я хочу узнать, есть ли способ сделать QMdiArea прозрачной для QEvent - ов за исключением того, когда одно из окон в фокусе (кроме того, что при каждом mouseevent-e проверять курсор на расположении в каждом из окон, хотя тут тоже придется извернуться кастуя их к QWidget-у), или какой-либо другой способ создания окон внутри окон в рамках фреймворка Qt.