Details
-
Suggestion
-
Resolution: Out of scope
-
P3: Somewhat important
-
4.4.1
-
None
Description
When embedding a QX11EmbedWidget with a transparent background into a QX11EmbedContainer, the transparency does not work.
// embedwidget.cpp code
#include <QtGui>
#include <QX11EmbedWidget>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QX11EmbedWidget w;
w.setStyleSheet("QX11EmbedWidget
");
QVBoxLayout *vLayout = new QVBoxLayout(&w);
w.setLayout(vLayout);
QTextEdit *edit = new QTextEdit(&w);
edit->setText("foobar");
vLayout->addWidget(edit);
qDebug() << "client id" << w.winId();
w.resize(100, 100);
w.show();
return app.exec();
}
// embedcontainer code
#include <QtGui>
#include <QX11EmbedContainer>
class X11EmbedContainer : public QX11EmbedContainer
{
Q_OBJECT
public:
X11EmbedContainer(QWidget *parent = NULL) : QX11EmbedContainer(parent)
void paintEvent(QPaintEvent *event)
{ QPainter painter(this); painter.fillRect(event->rect(), Qt::cyan); QX11EmbedContainer::paintEvent(event); }public slots:
void onEmbedded()
};
#include "embedcontainer.moc"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
X11EmbedContainer container;
container.show();
if (argc > 1) {
bool ok;
int id = QString(argv[1]).toInt(&ok);
if (ok)
}
return app.exec();
}
Update: This is not a bug; it's how the X11 embed support in Qt has always worked.