Имеется QMainWindow, на котором расположен osgQt::GLWidget. Мне необходимо поверх этого окна отобразить несколько виджетов. Этим виджетам я устанавливаю osgQt::GLWidget в качестве родителя и задаю им относительные координаты. Вначале я использовал аттрибут Qt::WA_TranslucentBackground, ибо это позволяло добиться требуемого мне эффекта.
Однако в этом случае результат был таким: http://i79.fastpic.ru/big/2016/0707/39/52ac2f4c9c2600ceb1192258ba0e3739.png То есть там, где должна быть прозрачность присутствует адская чернота.
Ок, убираем Qt::WA_TranslucentBackground. И ничего не меняется. То есть с отрисовкой самих виджетов проблем нет: кнопочки на месте, граница QFrame на месте, а вот там, где должна быть заливка QPalette::Window все та же чернота.
А если попытаться отобразить эти виджеты на фоне QGraphicsView с софтварным рендеринком, то вместо черноты таки прозрачность.
Вот сами виджеты:
class ControlObjectLabelWidget: public QFrame
{
Q_OBJECT
public:
ControlObjectLabelWidget(QWidget * parent = 0);
signals:
void changed();
protected:
void updatePosition();
private slots:
void controlObjectChanged(DataTypes::Id controlObjectId);
private:
QLabel * m_label;
};
ControlObjectLabelWidget::ControlObjectLabelWidget(QWidget * parent) :
QFrame(parent)
{
setFrameShape(QFrame::StyledPanel);
QHBoxLayout * layout = new QHBoxLayout(this);
m_label = new QLabel(this);
layout->addWidget(m_label);
layout->setContentsMargins(3, 3, 3, 3);
layout->setSpacing(3);
QObject::connect(Core::instance().eventController(), &EventController::controlObjectChanged,
this, &ControlObjectLabelWidget::controlObjectChanged);
}
Как видите, никакой прозрачности. В чем может быть проблема?