2

在 Qt 5.1.0 文档中它说

无效 QQuickWindow::setDefaultAlphaBuffer(bool useAlpha)

useAlpha 指定是否在新创建的窗口上使用 alpha 透明度。

在任何希望创建半透明窗口的应用程序中,有必要
在创建第一个 QQuickWindow 之前将其设置为 true,因为所有窗口将共享相同的 QOpenGLContext。默认值为假。

我已经使用这个函数创建了一个带有 QQuickView 的透明背景,但是据我所见,它没有改变任何东西(在 Windows 7 上),这是我的代码:

QQuickWindow::setDefaultAlphaBuffer(true);
QQuickView view;

view.setColor(Qt::transparent);
view.setSource(QUrl::fromLocalFile("test.qml");
view.setResizeMode(QQuickView::SizeRootObjectToView);

bool b = view.hasDefaultAlphaBuffer();

QWidget* p = QWidget::createWindowContainer(&view, NULL, Qt::FramelessWindowHint);
p->setAttribute(Qt::WA_TranslucentBackground);
p->show();

这是我的test.qml:

import QtQuick 2.0

Rectangle
{
 width: 300;
 height: 300;
 color: "transparent"

 Rectangle
 {
  x: 50;
  y: 50;
  width: 100;
  height: 100;
  color: "blue";
 }
}

那么这个功能有什么用呢?

4

1 回答 1

0

也许您需要在 QQuickView 对象上使用该函数:

view.setDefaultAlphaBuffer(true);
于 2013-09-04T20:03:59.270 回答