Как отобразить границу вокруг QWebEngineView? - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть QGraphicsWidget, который я использую для рисования и отображения нескольких элементов, включая QWebEngineView, используя QGraphicsProxyWidget.Я могу загрузить веб-контент в QWebEngineView, но я хотел бы, чтобы представление содержало рамку.Я использовал "setStyleSheet", чтобы попытаться добавить границу, но это не похоже на работу.Следующий код находится в конструкторе моего класса QGraphicsWidget для добавления QWebEngineView:

 QWebEngineView * view = new QWebEngineView();
 view->setFixedWidth(700);
 view->setFixedHeight(200);
 view->setStyleSheet("border: 10px border-color: black");
 view->load(QUrl("qrc:/myresources/guidetext.html"));

 QGraphicsProxyWidget * proxyView = new QGraphicsProxyWidget(this);    
 proxyView->setWidget(view);

Вот как он выглядит в настоящее время: enter image description here Как бы я хотел, чтобы он выглядел:enter image description here

1 Ответ

0 голосов
/ 25 сентября 2018

Проблема

Обычно, устанавливая атрибут Qt :: WA_StyledBackground , тогда правильная таблица стилей и поля содержимого должны выглядеть следующим образом:

view->setAttribute(Qt::WA_StyledBackground);
view->setStyleSheet("border: 1px solid black;");
view->setContentsMargins(1, 1, 1, 1);

должно помочь.

Однако, похоже, что QWebEngineView не учитывает поля содержимого:

QWebEngineView covers the right and bottom border

Обходной путь

Я бы посоветовал вам сделать QWebEngineView дочерним по отношению к другому QWidget и вместо этого стилизовать родительский виджет.

Пример

Вот пример, который я подготовил для вас, как изменить свой коддля реализации предложенного решения:

auto *proxyView = new QGraphicsProxyWidget();
auto *widget = new QWidget();
auto *view = new QWebEngineView(widget);
auto *l = new QVBoxLayout(widget);

l->addWidget(view);
l->setContentsMargins(1, 1, 1, 1);

widget->setAttribute(Qt::WA_StyledBackground);
widget->setStyleSheet("border: 1px solid black;");
widget->setFixedWidth(700);
widget->setFixedHeight(200);

view->load(QUrl("qrc:/myresources/guidetext.html"));

proxyView->setWidget(widget);

Результат

Вот результат при загрузке Google:

The whole border around QWebEngineView is visible

...