c++ - Qml/Qt/C++ : QQuickView in a QWidget - Need Background Transparency

标签 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);

最佳答案

尝试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"

主.qml:

import QtQuick 2.2

Item {
    Text {
        text: "Qt Quick Text"
        font.pixelSize: 32
        anchors.centerIn: parent
    }
}

enter image description here

关于c++ - Qml/Qt/C++ : QQuickView in a QWidget - Need Background Transparency,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26435988/

相关文章:

flash - 如何让 QtWebKit 看到 Flash?

qt - 无法放大 QIcon

qt - 如何从 QML 检测 dataChanged() 和 resourcesChanged()

qt - QML 窗口最小宽度

c++ - 如何使用 QML 围绕原点缩放 QMesh

c++ - 在 QT 框架中设置 QLabel 的像素图

c++ - 是否有合法的方式从 gsl::not_null<T> 转移?

c++ - Clang++ 3.5.0-rdynamic

php - 如何让C++应用程序从PHP接收数据?

c++ - 如何在 QML 场景上绘制 3D 线?