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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Отрисовка QWidget внутри QGLWidget  (Прочитано 4942 раз)
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.021 секунд. Запросов: 20.