QtQuick 2.0 で透明なウィンドウを作成しようとしています。
次のような透明なウィジェットを作成できます。
class TransparentWidget : public QWidget
{
public:
TransparentWidget(QWidget* parent)
: QWidget(parent)
{
resize(QSize(500, 500));
setAttribute(Qt::WA_TranslucentBackground);
setWindowFlags(Qt::FramelessWindowHint);
}
void paintEvent(QPaintEvent * event)
{
QPainter painter;
QBrush brush(Qt::cyan);
painter.begin(this);
painter.setRenderHint(QPainter::Antialiasing);
painter.setBrush(brush);
painter.drawRect(0,0,100,100);
painter.end();
}
};
QQuickViewで同じことをしたいので、最初に作成します:
QQuickView view;
view.setSource(QUrl::fromLocalFile("test.qml"));
view.setResizeMode(QQuickView::SizeRootObjectToView);
ここに私の「test.qml」ファイルがあります:
Rectangle
{
width: 300;
height: 300;
color: "transparent";
Rectangle
{
anchors.top: parent.top;
anchors.left: parent.left;
width: 50;
height: 100;
color: "lightsteelblue";
}
Rectangle
{
anchors.bottom: parent.bottom;
anchors.right: parent.right;
width: 50;
height: 100;
color: "darkgrey";
}
}
今、透明なウィジェットを作成したいのですが、そのようにしました:
QWidget *p = QWidget::createWindowContainer(&view, NULL, Qt::FramelessWindowHint);
p->setAttribute(Qt::WA_TranslucentBackground);
p->show();
前のウィジェットと同じように、WA_TranseculentBackground と FramelessWindowHint を使用してウィジェットを作成しましたが、機能しませんでした。
少し深くなり、pix を使用して QQuickView 呼び出しの背後にあるものを確認すると、次の行が表示されます。
今私の質問:
1 - Qt が IDirect3DDevice9::clear を白色で呼び出すのはなぜですか?
2- QQuickView または QmlEngine に背景を描画しないように指示する方法はありますか?