У меня есть 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);
Вот как это выглядит в настоящее время:
Как бы я хотел, чтобы это выглядело так:
Обычно, установка Qt :: WA_StyledBackground атрибут, затем правильная таблица стилей и поля содержимого, как это:
view->setAttribute(Qt::WA_StyledBackground);
view->setStyleSheet("border: 1px solid black;");
view->setContentsMargins(1, 1, 1, 1);
должен сделать свое дело.
Тем не менее, кажется, что QWebEngineView
не соблюдает поля содержания:
Я бы предложил вам сделать 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:
Других решений пока нет …