Russian Qt Forum
Ноябрь 01, 2024, 15:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Отрисовка QWidget внутри QGLWidget  (Прочитано 4789 раз)
vic_prog
Гость
« : Сентябрь 28, 2011, 16:50 »

Есть проблема.
Есть QWidget с эффектом тени. Его надо отрисовать внутри QGLWidget.

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

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

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

« Последнее редактирование: Сентябрь 28, 2011, 17:26 от vic_prog » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Сентябрь 28, 2011, 17:50 »

Посмотри на это.
Записан

Qt 5.11/4.8.7 (X11/Win)
vic_prog
Гость
« Ответ #2 : Сентябрь 28, 2011, 18:09 »

Связку QGraphicsScene+QGrapchisView+QGLWidget(в качестве viewport)+QGLWidget(как proxy widget элемент сцены) я пробовал. Там все работает.

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

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Сентябрь 28, 2011, 18:41 »

А я это и не советовал. Внимательно смотри #3.
Записан

Qt 5.11/4.8.7 (X11/Win)
vic_prog
Гость
« Ответ #4 : Сентябрь 29, 2011, 09:27 »

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

Хотелось бы более честный способ.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #5 : Сентябрь 29, 2011, 11:44 »

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

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

Qt 5.11/4.8.7 (X11/Win)
vic_prog
Гость
« Ответ #6 : Сентябрь 29, 2011, 12:04 »

Я вроде на нащупал вариант решения.
QWidget можно поставить атрибут Qt::WA_DontShowOnScreen, тогда он не отрисовываеться, а сообщения принимает.
Но в том месте, где он якобы находиться через QPainter отрисовать не получаеться.
Сейчас пробую отрисовать QWidget как текстуру.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.131 секунд. Запросов: 22.