簡體   English   中英

QtQuick 2.0的透明小部件

[英]Transparent widget with QtQuick 2.0

我試圖用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后面跟注,我看到這一行:

pix輸出

現在我的問題:

1 - 為什么Qt用白色調用IDirect3DDevice9 :: clear?

2-有沒有辦法告訴QQuickView或QmlEngine不要繪制任何背景?

QtQuick2的透明度從Qt 5.2開始,至少對於Windows(Angle和OpenGL版本)都是如此:

創建一個視圖:

QQuickView view;
view.setOpacity(0.9999);
view.setColor( Qt::transparent );
view.setSource( QUrl::fromLocalFile( QLatin1String( "Main.qml" ) ) );

除setOpacity和setColor之外,不需要額外的樣式/屬性/標志調用。 “Main.qml”必須正確設置透明度,就像您的QML示例一樣:

Rectangle {
    color: "transparent"
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM