有什么用的函数void QQuickWindow :: setDefaultAlphaBuffer(bool useAlpha)?

时间:2013-07-23 08:55:36

标签: c++ qt qml

在Qt 5.1.0文档中,它说

  

void QQuickWindow :: setDefaultAlphaBuffer(bool useAlpha)

     

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

     

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

我已经使用这个功能用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";
 }
}

那么这个功能的用途是什么?

1 个答案:

答案 0 :(得分:0)

也许您需要在QQuickView对象上使用该功能:

view.setDefaultAlphaBuffer(true);