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;
}
}
У меня есть один погрузчик, и одно изображение на этом экране, и цвет фона прозрачен. Когда я запускаю это приложение, он должен отображать прозрачный фон с изображением в центре (поскольку я не устанавливал источник загрузчика).
Но то, что я получаю, это изображение в центре с белым фоном, заполненным на экране, я не знаю, кто заполняет этот белый цвет фона, как я упомянул прозрачный цвет как фон.
Я использую 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 ("граница: нет");