QML: прозрачность для прямоугольника не работает

StackOverflow https://stackoverflow.com/questions/7820986

  •  27-10-2019
  •  | 
  •  

Вопрос

Как установить прозрачность прямоугольника/экрана.

У меня есть следующий код:

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

У меня есть один погрузчик, и одно изображение на этом экране, и цвет фона прозрачен. Когда я запускаю это приложение, он должен отображать прозрачный фон с изображением в центре (поскольку я не устанавливал источник загрузчика).

Но то, что я получаю, это изображение в центре с белым фоном, заполненным на экране, я не знаю, кто заполняет этот белый цвет фона, как я упомянул прозрачный цвет как фон.

Я использую QT.4.7.0 и Linux.

У меня есть два плоскости в моей целевой системе One - видео плоскость, а другой - графическая плоскость, когда я запускаю графический интерфейс с прозрачным фоном (установить прозрачность в видео -месте). Он должен отображать видео на видео в примере выше. Он показывает фон как белый, как Он должен был отображать видео, воспроизводимое на видео самолета.

Это было полезно?

Решение

По умолчанию qdeclarativeview рисует фон. Может быть, это проблема в вашем случае.

Из http://doc.qt.nokia.com/4.7/qdeclarativeperformance.html

Вы также можете помешать QdeClarativeView покрасить фон окна, если вы предоставите фон вашего приложения, используя QML, например,

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

Другие советы

Я предполагаю, что фон белый, а ваш прямоугольник действительно полностью прозрачен.

Какой тип является Loaderscreen, я думаю, это своего рода QdeCalarativeView, пожалуйста, прощайте любые технические промахи, которые не закодировали QT/QML уже почти год. Насколько я помню, фон представления по умолчанию был белым, а какая прозрачность вы надеетесь достичь в любом случае?

Если вы установите только фоновый цвет на Qpushbutton, фон может не отображаться, если вы не установите свойство границы на какое-то значение. Это связано с тем, что по умолчанию Qpushbutton рисует нативную границу, которая полностью перекрывает фоновый цвет. Это может показать черную прямоугольную коробку вокруг Qpushbutton. Вы столкнетесь с этой проблемой, особенно на машинах Linux. Чтобы избежать этого, вы можете установить свойство границы на ничем

Widget-> setStylesheet ("граница: нет");

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top