我在使QQuickWidget
背景透明时遇到问题。
我想在 aQQuickWidget
下放置 a QWidget
。使用QQuickWidget
源 qml 文件。当我使用 Qt 4.8 时,我使用了QDeclarativeView
. QDeclarativeView
不再使用从 Qt 4 到 Qt 5 的移植。因此,我使用QQuickWidget
代替QDeclarativeView
,如下:
QWidget *mainWidget = new QWidget();
mainWidget->setStyleSheet("background-image: url(:/background.png);");
QQuickWidget *quick = new QQuickWidget(mainWidget);
quick->setAttribute(Qt::WA_TranslucentBackground, true);
quick->setAttribute(Qt::WA_AlwaysStackOnTop, true);
quick->setClearColor(Qt::transparent);
quick->setSource(QUrl("qrc:/image.qml"));
QWidget *topWidget = new QWidget(mainWidget);
topWidget->setStyleSheet("background-image: url(:/semitransparent.png);");
如果我做:
setAttribute(Qt::WA_AlwaysStackOnTop, true);
QQuickWidget
然后背景变得透明,但打破了涉及同一窗口内部其他小部件的堆叠顺序。
我想QQuickWidget
在QWidget
. 这可能吗?如果没有,您建议什么解决方法?
(1) 这是 mainWidget 的背景图片:
(2) 这是QQuickWidget的背景。qml 文件使用此图像:
(3) 这是topWidget的背景图:
(4) 我想要什么:
(5) 当我设置WA_AlwaysStackOnTop
为false时我得到什么:
(6) 当我设置WA_AlwaysStackOnTop
为true时我得到什么: