Question

Comment la transparence ensemble d'un rectangle / écran.

Je code suivant:

// 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();
}

Et fichier QML est:

//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;
    }
}

I ont une chargeuse et une image de cet écran et la couleur d'arrière-plan est transparent. Quand je lance cette application, il doit afficher un fond transparent avec l'image dans le centre (comme je l'ai pas mis source de chargeur).

mais ce que je reçois est l'image dans le centre avec un fond blanc rempli l'écran, je ne sais pas qui remplit dans cette couleur de fond blanc comme je l'ai mentionné la couleur transparente en arrière-plan.

J'utilise QT.4.7.0 et Linux.

J'ai deux plans sur mon système cible un est plane vidéo et un autre est plan graphique, quand je lance l'interface graphique avec un fond transparent (transparence définie au lieu de la vidéo), il devrait afficher une vidéo sur la place Vidéo dans l'exemple ci-dessus, il montre fond comme blanc, comme il aurait dû afficher la vidéo à jouer sur le plan vidéo.

Était-ce utile?

La solution

Par défaut, le QDeclarativeView peint un arrière-plan. Peut-être que le problème dans votre cas.

De http://doc.qt.nokia.com/4.7/qdeclarativeperformance.html

Vous pouvez également empêcher QDeclarativeView de la peinture son arrière-plan de la fenêtre si vous fournirez l'arrière-plan de votre application en utilisant QML, par exemple.

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

Autres conseils

Ma première hypothèse est que le fond est blanc et votre rectangle est en effet totalement transparent.

De quel type est LoaderScreen, je pense qu'il est une sorte de QDecalarativeView, s'il vous plaît pardonnez-les misses techniques ne sont pas codés Qt / QML pendant près d'un an. Comme je me rappelle l'arrière-plan par défaut de la vue était blanche et quel genre de transparence que vous espérez achive de toute façon?

Si vous ne définissez un peut background-color sur un QPushButton, l'arrière-plan ne pas apparaître sauf si vous définissez la propriété border une certaine valeur. En effet, par défaut, le QPushButton dessine une frontière native qui chevauche complètement la couleur de fond. Cela pourrait montrer une boîte rectangulaire noire autour QPushButton. Vous ferez face à ce problème en particulier sur des machines Linux. Pour éviter cela, vous pouvez définir la propriété border à aucun

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top