У меня проблема с созданием фона QQuickWidget
.Невозможно сделать QQuickWidget фоном прозрачным без разрыва порядка укладки
Я хочу разместить QQuickWidget
под QWidget
. В файле QQuickWidget
используется исходный qml-файл. Когда я работал с Qt 4.8, я использовал QDeclarativeView
. Портирование с Qt 4 на Qt 5, QDeclarativeView
больше не используется. Поэтому я использую QQuickWidget
вместо QDeclarativeView
следующим образом:
QWidget *mainWidget = new QWidget();
mainWidget->setStyleSheet("background-image: url(:/background.png);");
QQuickWidget *quick = new QQuickWidget(mainWidget);
quick->setAttribute(Qt::WA_TranslucentBackground, true);
quick->setAttribute(Qt::WA_AlwaysStackOnTop, true);
quick->setClearColor(Qt::transparent);
quick->setSource(QUrl("qrc:/image.qml"));
QWidget *topWidget = new QWidget(mainWidget);
topWidget->setStyleSheet("background-image: url(:/semitransparent.png);");
Если я:
setAttribute(Qt::WA_AlwaysStackOnTop, true);
то фон становится прозрачным, но нарушает порядок наложения с участием других виджетов под QQuickWidget
внутри то же окно.
Я хочу сделать QQuickWidget
прозрачным, если он находится под QWidget
. Это возможно? Если нет, какие обходные пути вы предлагаете?
(1) Это mainWidget в фоновое изображение:
(2) Это фон QQuickWidget в. QML файл использовать это изображение:
(3) Это topWidget в фоновое изображение:
(4) То, что я хочу:
(5) Что я получаю, когда устанавливаю WA_AlwaysStackOnTop
как false:
(6) Что я получаю, когда я установил WA_AlwaysStackOnTop
, как истинный:
Почему вы заботитесь ли QQuickWidget является прозрачным или нет, так как она находится в нижней части? Является ли это частично видимым, и вы хотите убедиться, что даже частично видимые части вообще не видны? – Sabuncu
Я отредактировал ваш вопрос, но, пожалуйста, просмотрите эту часть: «включение других виджетов под QQuickWidget в том же окне». В исходном предложении не было глагола («fiil»), поэтому я экстраполировал значение на основе контекста. – Sabuncu
Это поможет обеспечить скриншот, который показывает проблему, когда используется 'WA_AlwaysStackOnTop'. Предоставьте ссылку на захват экрана imgur, и я поставлю его в суть вопроса. – Sabuncu