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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: (РЕШЕНО) Потеря прозрачности виджетов на QGraphicsProxyWidget  (Прочитано 2479 раз)
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« : Сентябрь 27, 2016, 18:03 »

Задача такая - виджеты расположены в дизайнере над QGraphicsView, затем при старте приложения они "переезжают" на QGraphicsProxyWidget-ы, лежащие на соответствующей QGraphicsScene. Такое нужно, чтобы можно было применить к виджетам любые трансформации - если они просто лежат centralWidget главного окна, то любыми способами их трансформировать невозможно. То, что нужно получилось, но когда виджет переезжает на QGraphicsProxyWidget, он почему-то теряет прозрачность. То есть, те его части, которые были прозрачны, становятся непрозрачными. Во всяком случае это так для виджетов, содержащих SVG графику. Как для родных из комплекта, так и добавленных.

Например, во вложении первый скрин - так выглядит окно приложения в Qt-дизайнере (стрелка - это самодельный SVG-виджет), а во втором вложении уже скрин запущенного приложения. Даже родной виджет с вращающейся ручкой потерял прозрачность.

Пробовал запрещать заливку фона для QGraphicsView:

Код:
                   QGraphicsProxyWidget* gproxy = new QGraphicsProxyWidget;
                    gproxy->setAutoFillBackground( false ); // не помогает
                    gproxy->setWidget( widget );
                    scene->addItem( gproxy ); // attach to scene

Может кто уже встречал в сети, как это побороть? Нужно, чтобы виджеты, лежащие на QGraphicsProxyWidget, который на самом деле, QGraphicsItem, были прозрачны там где нужно.
« Последнее редактирование: Сентябрь 27, 2016, 20:30 от Гурман » Записан

2^7-1 == 127, задумайтесь...
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #1 : Сентябрь 27, 2016, 20:30 »

Всё, решено, надо перед привязкой виджета к QGraphicsProxyWidget установить виджету атрибут Qt::WA_NoSystemBackground. Почему-то при отвязке виджета от предыдущего родителя этот атрибут сбрасывается в false и бэкграунд вылазит. Нигде не описано.
Записан

2^7-1 == 127, задумайтесь...
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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