3

長方形/画面の透明度を設定する方法。

私は次のコードを持っています:

// 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つあり、背景色は透明です。このアプリケーションを実行すると、中央に画像が表示された透明な背景が表示されます(ローダーソースを設定していないため)。

しかし、私が得ているのは、画面に白い背景が塗りつぶされた中央の画像です。背景として透明色について言及したので、誰がこの白い背景色を塗りつぶしているのかわかりません。

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

ターゲットシステムに2つのプレーンがあります。1つはビデオプレーンで、もう1つはグラフィックプレーンです。透明な背景でGUIを実行すると(ビデオの場所に透明度を設定)、上記の例ではビデオの場所にビデオが表示されます。ビデオプレーンで再生中のビデオを表示する必要があります。

4

3 に答える 3

3

デフォルトでは、QDeclarativeViewは背景をペイントします。多分それはあなたの場合の問題です。

http://doc.qt.nokia.com/4.7/qdeclarativeperformance.htmlから

QMLを使用してアプリケーションの背景を提供する場合は、QDeclarativeViewがウィンドウの背景をペイントしないようにすることもできます。

 QDeclarativeView window;
 window.setAttribute(Qt::WA_OpaquePaintEvent);
 window.setAttribute(Qt::WA_NoSystemBackground);
 window.viewport()->setAttribute(Qt::WA_OpaquePaintEvent);
 window.viewport()->setAttribute(Qt::WA_NoSystemBackground);
于 2011-10-19T19:04:08.257 に答える
0

私の最初の推測では、背景は白で、長方形は完全に透明です。

LoaderScreenとは、ある種のQDecalarativeViewのタイプだと思います。技術的なミスが、ほぼ1年間Qt/QMLをコーディングしていないことをご容赦ください。私が覚えているように、ビューのデフォルトの背景は白でしたが、とにかくどのような透明度を達成したいと思っていますか?

于 2011-10-19T12:13:28.270 に答える
0

QPushButtonにbackground-colorのみを設定した場合、borderプロパティを何らかの値に設定しない限り、背景が表示されない場合があります。これは、デフォルトでは、QPushButtonが背景色と完全に重なるネイティブボーダーを描画するためです。これにより、QPushButtonの周りに黒い長方形のボックスが表示される場合があります。特にLinuxマシンでこの問題に直面します。これを回避するために、borderプロパティをnoneに設定できます

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

于 2018-01-08T16:30:45.740 に答える