我使用QWidget
中的QWidget::createWindowContainer
创建了QQuickView
:
QQuickView view;
view.setSource(QUrl("./Test.qml"));
QWidget *container = QWidget::createWindowContainer(&view);
Qml非常简单:
import QtQuick 2.0
Rectangle {
width: 50
height: 50
color: "blue"
radius: 5
}
我需要一个半透明的无框架容器来显示矩形。试图在QDialog中显示小部件:
QDialog dialog;
QHBoxLayout layout;
dialog.setWindowFlags(Qt::FramelessWindowHint);
dialog.setAttribute(Qt::WA_TranslucentBackground);
layout.addWidget(container);
dialog.setLayout(&layout);
dialog.show();
我什么也没得到,因为似乎透明度也传播到了container
个对象。如果我尝试添加到layout
而不是container
窗口小部件,例如QPushButton
,则一切正常,只显示按钮。我的QML小部件需要相同的结果。哪里可能是问题?我正在使用Qt 5.2.1
答案 0 :(得分:1)
我怀疑它可以用于嵌入QWidget的QQuickView。但是你可以拥有一个透明的QQuickView:
QQuickView view;
view.setSurfaceType(QSurface::OpenGLSurface);
QSurfaceFormat format;
format.setAlphaBufferSize(8);
format.setRenderableType(QSurfaceFormat::OpenGL);
view.setFormat(format);
view.setColor(QColor(Qt::transparent));
view.setClearBeforeRendering(true);
view.setFlags(Qt::FramelessWindowHint);
view.setSource(QStringLiteral("./Test.qml"));
view.show();