После того как было решено заменить рисование на канве, рисованием средствами opengl, возникли проблемы с отрисовкой диалогов который поверх основного виджета.
Что есть:
QGLWidget с динамической 2D сценой, обновляемой раз в 10ms... в общем очень часто.
Несколько классов, наследуемых от QDialog - виджеты которые всегда сверху.
Все что наследуется от QDialog, отрисовывается кастомно (через paintEvent). Фон этих виджетов рисуется полупрозрачным.
Также для них выставляется несколько опций:
setWindowFlags(Qt::FramelessWindowHint);
setAttribute(Qt::WA_TranslucentBackground);
Т.к. Qt::FramelessWindowHint не позволяет передвигать диалоги (точнее то что от них наследуется...), обрабатываются mouseEvent'ы и реализована возможность перетаскивать эти виджеты, считая изменение координат мышки (при зажатой кнопке) и вызова наследуемого от QWidget метода move(x, y).
Проблема заключается в том, что при перетаскивании этих виджетов по экрану, случается полный ппц с их фоном (похожий эффект при подвисании наблюдается обычно - следы от окон в них появляются и т.п...). Также эти перетаскиваемые диалоги начинают "следить" на других виджетах (которые статичны, но также наследуются от qdialog и рисуются кастомно в paintEvent'е).
Если задать setAttribute(Qt::WA_OpaquePaintEvent), то все вроде ок, т.к. заставляет их перерисовываться полностью при каждом paintEvent...
Однако остается 2 проблемы...
1) После перехода на OpenGL (вместо рисования на канве), фон у этих перетаскиваемых виджетов перестал быть прозрачным по отношению к OpenGL'ной сцене, но остался прозрачным по отношению к черному цвету, который по совместительству является glClearColor'ом...
2)Даже после WA_OpaquePaintEvent все равно эти dragable виджеты один хрен друг на друге следят и на других недвигаемых виджетах...
Собсно как побороть эти проблемы?
П.с. может тут нужно QGraphicsScene использовать? Или ещё что-то?
Для наглядности приложил скрин (внизу QGLWidget, панель слева и окошечки это QDialog).