2011-10-19 30 views
3

矩形/画面の透明度を設定する方法。QML:矩形の透明度が機能しない

// main.cpp 
void main(int argc, char*[] argv) 
{ 
    QApplication::setGraphicsSystem("raster"); 
    QApplication app(argc, argv); 

    QDeclerativeView view; 
    view.setSource(QUrl::fromLocalFile("loaderTest.qml")); 

    view.setResizeMode(QDeclarativeView::SizeRootObjectToView); 
    view.showFullScreen(); 

    //QRegion mask(10, 10, 100, 100); 
    //view.setMask(); 

    view.show(); 
    app.exec(); 
} 

そしてQMLファイルは次のとおりです:

は、私は、次のコードを持っている

//loaderTest.qml 
Rectangle 
{ 
    id: mainRectangle 
    width: 1000 
    height: 700 
    color: "transparent" 
    //color: "#00000000" 

    Image 
    { 
     id: image1; 
     width: 348; 
     height: 155; 
     anchors.horizontalCenter: parent.horizontalCenter; 
     anchors.verticalCenter: parent.verticalCenter; 
     source: "test.png" 
    } 

    Loader 
    { 
     id: mainLoader 
     anchors.fill: parent; 
     source: ""; 
     focus: true; 
    } 
} 

私は、この画面で1つのローダー1枚の画像を持っていると、背景色が透明です。 私はこのアプリケーションを実行すると、ローダーソースを設定していないので、中央に画像がある透明な背景が表示されるはずです。

しかし、画面に白い背景が埋め込まれたイメージが中央に表示されていますが、この白い背景色を塗りつぶしている人はわかりません。

私はQT.4.7.0とLinuxを使用しています。

私は目標のシステム上で2つのプレーンをビデオプレーンにし、もう1つはグラフィックスプレーンです。透明な背景(ビデオの場所で透明度を設定する)でGUIを実行すると、上の例でビデオを表示する必要がありますビデオプレーンでビデオを再生しているはずだったので、白で表示されます。

答えて

3

デフォルトでは、QDeclarativeViewは背景をペイントします。たぶんそれはあなたの場合の問題です。あなたは、例えば、QMLを使用して、アプリケーションのバックグラウンドを提供します場合にも、そのウィンドウの背景を描くからQDeclarativeViewを防ぐことができますhttp://doc.qt.nokia.com/4.7/qdeclarativeperformance.html

から

QDeclarativeView window; 
window.setAttribute(Qt::WA_OpaquePaintEvent); 
window.setAttribute(Qt::WA_NoSystemBackground); 
window.viewport()->setAttribute(Qt::WA_OpaquePaintEvent); 
window.viewport()->setAttribute(Qt::WA_NoSystemBackground); 
0

私の最初の推測は、背景が白で、長方形が実際に完全に透明であるということです。

LoaderScreenとは何種類ですか?QDecalarativeViewのようなものです。技術的なミスは、Qt/QMLのコード化が一年も経っていないことを許してください。私はそれを覚えているので、ビューのデフォルトの背景は白で、どんな透明性を実現したいと思っていますか?

+0

申し訳ありませんがQDecalarativeViewです。私は質問を編集しました。 – kbalar

+0

はいLoaderScreenはQDecalarativeViewから派生したもので、完全な透過性が必要です。 - Kbalar – User7723337

0

あなただけのQPushButtonに背景色を設定した場合、あなたには、いくつかの値にborderプロパティを設定しない限り、背景が表示されない場合があります。これは、デフォルトでは、QPushButtonが背景色と完全に重なるネイティブの境界線を描画するためです。 QPushButtonの周囲に黒い四角いボックスが表示されることがあります。特にLinuxマシンでこの問題に直面します。これを避けるには、borderプロパティをnoneに設定します。

widget-> setStyleSheet( "border:none");

関連する問題