Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: vic_prog от Сентябрь 28, 2011, 16:50



Название: Отрисовка QWidget внутри QGLWidget
Отправлено: vic_prog от Сентябрь 28, 2011, 16:50
Есть проблема.
Есть QWidget с эффектом тени. Его надо отрисовать внутри QGLWidget.

Если делать по простому, когда QGLWidget выступает parent-ом для QWidget - рисуеться просто квадратик в месте расположения QWidget
Если делать, что QGLWidget центарльный widget QMainWindow, то QWidget рисуеться, но не работает прозрачность для теней отбрасываемые QWidget (вроде конфликт контентов рисования).

Подскажите, как можно сделать?

PS. Вроде можно заставить QWidget рисоваться в QPixmap и ее как текстуру отображать в QGLWidget, но не могу понять, как заставить рисоваться QWidget только в QPixmap, даже когда ставлю фильтр на все события и подавлюя любые события для QWidget.



Название: Re: Отрисовка QWidget внутри QGLWidget
Отправлено: GreatSnake от Сентябрь 28, 2011, 17:50
Посмотри на это (http://www.prog.org.ru/index.php?topic=19458.msg131442#msg131442).


Название: Re: Отрисовка QWidget внутри QGLWidget
Отправлено: vic_prog от Сентябрь 28, 2011, 18:09
Связку QGraphicsScene+QGrapchisView+QGLWidget(в качестве viewport)+QGLWidget(как proxy widget элемент сцены) я пробовал. Там все работает.

Но слишком велики накладные расходы. По этому хочу использовать более прямой вариант.


Название: Re: Отрисовка QWidget внутри QGLWidget
Отправлено: GreatSnake от Сентябрь 28, 2011, 18:41
А я это и не советовал. Внимательно смотри #3.


Название: Re: Отрисовка QWidget внутри QGLWidget
Отправлено: vic_prog от Сентябрь 29, 2011, 09:27
Распологать QWidget вне отображаемой области QGLWidget, и рисовать через QPixmap - визуально это работает.
Но у меня на QWidget расположены контролы, с которыми надо взаимодействовать. Получаеться для этого надо придумать какую-то схему проброски сообщений мыши.
Как-то не красиво получаеться.

Хотелось бы более честный способ.


Название: Re: Отрисовка QWidget внутри QGLWidget
Отправлено: GreatSnake от Сентябрь 29, 2011, 11:44
Распологать QWidget вне отображаемой области QGLWidget, и рисовать через QPixmap - визуально это работает.
Но у меня на QWidget расположены контролы, с которыми надо взаимодействовать. Получаеться для этого надо придумать какую-то схему проброски сообщений мыши.
Я всего лишь предложил решение вопроса:
PS. Вроде можно заставить QWidget рисоваться в QPixmap и ее как текстуру отображать в QGLWidget, но не могу понять, как заставить рисоваться QWidget только в QPixmap, даже когда ставлю фильтр на все события и подавлюя любые события для QWidget.

Цитировать
Хотелось бы более честный способ.
Имхо, нет его.


Название: Re: Отрисовка QWidget внутри QGLWidget
Отправлено: vic_prog от Сентябрь 29, 2011, 12:04
Я вроде на нащупал вариант решения.
QWidget можно поставить атрибут Qt::WA_DontShowOnScreen, тогда он не отрисовываеться, а сообщения принимает.
Но в том месте, где он якобы находиться через QPainter отрисовать не получаеться.
Сейчас пробую отрисовать QWidget как текстуру.