Мы пытаемся перенести приложение с Qt 4 на Qt 5.4. Qt 5.4 имеет новый веб-движок. Мы использовали, чтобы сделать фон QWebView
и QWebPage
быть прозрачным:Прозрачный фон в QWebEnginePage
view = new QWebView(this);
QPalette palette = view->palette();
palette.setBrush(QPalette::Base, Qt::transparent);
view->page()->setPalette(palette);
view->setAttribute(Qt::WA_OpaquePaintEvent, false);
Но этот код не работает для QWebEngineView
и QWebEnginePage
. Дело в том, что QWebEnginePage
не имеет такого API, как setPalette
.
Может ли кто-нибудь найти способ решить эту проблему? Частичное решение
К сожалению, это не работает вообще. Когда я использую этот код в webEngineView, который находится внутри прозрачного окна (для отображения поверх другого окна), фон веб-сайта, который содержит ничего, кроме div с текстом, остается белым. Протестировано с Qt 5.7. Использование другого виджета с QGraphicsOpacityEffect на нем работает, поэтому прозрачность работает ... просто не с QWebEngineView, похоже. – TheSHEEEP
После того, как поиграть немного больше, кажется, что фон PAGE действительно становится невидимым. Поэтому я думаю, что это сработает. Однако фон QWebEngineVIEW остается белым, поэтому он не очень помогает. – TheSHEEEP
В вашем HTML вы использовали прозрачный фон в своем CSS? примерно: body { фон: прозрачный; } в противном случае, я думаю, что по умолчанию HTML будет иметь белый фон. –