Qml/Qt/C++:QWidget中的QQuickView - 需要背景透明度

Vii*_*Vii 4 c++ qt qml

我试图让我的容器中的qquickview透明,只显示没有背景的QML文件中的元素.

有没有更好的方法来实现这个?这是相关的代码,你可以看到我已经注释了将QML添加到它,以便唯一的攻击者是包含QQuickView的QWidget

QML将仅使用文本制作类似于Apple的"Cover Flow"的菜单.我只希望它生成的文本可见.

目前它具有坚实的白色背景.

QQuickView *view = new QQuickView();
QWidget *container = QWidget::createWindowContainer(view, this);
container->setObjectName("wrappingContainer");
container->setMinimumSize(1000, 240);
container->setMaximumSize(1000, 240);
container->setFocusPolicy(Qt::TabFocus);

//view->setSource(QUrl("qrc:/qml/wrappingMenu.qml"));
ui->testLayout->addWidget(container);
Run Code Online (Sandbox Code Playgroud)

Mit*_*tch 5

试试QQuickWidget:

#include <QtWidgets>
#include <QQuickWidget>

class Widget : public QWidget
{
    Q_OBJECT
public:
    Widget() {
        setStyleSheet("background-color: 'grey';");
        mQQuickWidget = new QQuickWidget(QUrl(QStringLiteral("main.qml")), this);
        mQQuickWidget->setResizeMode(QQuickWidget::SizeRootObjectToView);
        mQQuickWidget->setAttribute(Qt::WA_AlwaysStackOnTop);
        mQQuickWidget->setClearColor(Qt::transparent);
        mQQuickWidget->resize(400, 400);
        mQQuickWidget->raise();
    }
private:
    QQuickWidget *mQQuickWidget;
};

int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    Widget widget;
    widget.resize(400, 400);
    widget.show();
    return app.exec();
}

#include "main.moc"
Run Code Online (Sandbox Code Playgroud)

main.qml:

import QtQuick 2.2

Item {
    Text {
        text: "Qt Quick Text"
        font.pixelSize: 32
        anchors.centerIn: parent
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述