![](/img/trans.png)
[英]How to use statusChanged in WebView ( QtQuick 2.0 and QtWebKit 3)?
[英]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后面跟注,我看到這一行:
現在我的問題:
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.