我试图让我的带有 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
}
}
关于c++ - Qml/Qt/C++ : QQuickView in a QWidget - Need Background Transparency,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26435988/