2017-01-17 6 views
0

QQuickWidgetの背景を透明にする問題があります。QQuickWidgetの背景をブレーク・スタッキング・オーダーなしで透明にすることができません。

QWidgetの下にQQuickWidgetを配置します。 QQuickWidgetは、ソースqmlファイルを使用します。私がQt 4.8で作業したとき、私はQDeclarativeViewを使用しました。 Qt 4からQt 5への移植は、QDeclarativeViewは使用されなくなりました。次のようにそのため、私は、代わりにQDeclarativeViewQQuickWidgetを使用しています:

QWidget *mainWidget = new QWidget(); 
mainWidget->setStyleSheet("background-image: url(:/background.png);"); 

QQuickWidget *quick = new QQuickWidget(mainWidget); 
quick->setAttribute(Qt::WA_TranslucentBackground, true); 
quick->setAttribute(Qt::WA_AlwaysStackOnTop, true); 
quick->setClearColor(Qt::transparent); 
quick->setSource(QUrl("qrc:/image.qml")); 

QWidget *topWidget = new QWidget(mainWidget); 
topWidget->setStyleSheet("background-image: url(:/semitransparent.png);"); 

私が行う場合:

setAttribute(Qt::WA_AlwaysStackOnTop, true); 

は、背景が透明になりますが、内部QQuickWidget下に他のウィジェットを含む積層順を破る

同じウィンドウ。

QWidgetの下にあるときはQQuickWidgetを透明にしたいと考えています。これは可能ですか?そうでない場合は、どのような回避策を提案しますか?

(1)これはmainWidgetの背景画像である:

enter image description here

(2)これはQQuickWidgetの背景です。 QMLファイルには、このイメージを使用します。

enter image description here

(3)これはtopWidgetの背景画像です:

enter image description here

(4)私が欲しいもの:

enter image description here

( 5)WA_AlwaysStackOnTopfalseに設定した場合

enter image description here

(6)私はWA_AlwaysStackOnTopとして、私が設定したときに何を得る:重なり順で破壊することは可能であることを述べている

ここenter image description here

+0

なぜあなたは、QQuickWidgetが透明であるかどうかを気にしていますか?部分的にしか見えないのですか?また、部分的に見える部分がまったく見えないようにしたいのですか? – Sabuncu

+0

私はあなたの質問を編集しましたが、この部分:「同じウィンドウ内のQQuickWidgetの下にある他のウィジェットを含む」を見直してください。元の文は動詞(「fiil」)を持たなかったので、文脈に基づいてその意味を外挿しました。 – Sabuncu

+0

WA_AlwaysStackOnTopが使用されているときに、問題を示すスクリーンショットを提供するのに役立ちます。 imgurのスクリーンキャプチャへのリンクを提供して、それを質問の本文に入れます。 – Sabuncu

答えて

0

公式QTドキュメントhttp://doc.qt.io/qt-5/qquickwidget.html期待:

絶対に必要な場合は、 をQQuickWidgetのQt :: WA_AlwaysStackOnTop属性に設定することでこの制限を克服することができます。 しかし、これは積み重ね順序を破ることに注意してください。例えば、 はQQuickWidgetの上に他のウィジェットを持つことができないので、 は半透明の QQuickWidgetの下に他のウィジェットを表示する必要がある場合にのみ使用するべきです

また、この公式ブログのエントリを参照してください。結論

http://www.ics.com/blog/combining-qt-widgets-and-qml-qwidgetcreatewindowcontainer

http://blog.qt.io/blog/2014/07/02/qt-weekly-16-qquickwidget/

この最近のブログのエントリは、QT 5.1で新しく追加された機能のためであるあなたが見ていることはバグではありませんが、 QTフレームワークの既知の認識された宣伝された制限です。

私のアドバイス:これをハックで解決しようとしないで、UIのアプローチを再設計してください。たとえば、topWidgetアルファブレンド(半透明)にすることができます。

EDIT:たとえば、次のように:それは一番下にあるので、

enter image description here

+0

qtそれは編集された画像ですか? –

+0

編集済みの画像です。 – Sabuncu

関連する問題