如何在QWebEngineView周围显示边框?

时间:2018-09-24 19:03:30

标签: c++ qt qwebengineview

我有一个QGraphicsWidget,我正在使用它来绘制和显示许多项目,包括使用QGraphicsProxyWidget的QWebEngineView。我可以将Web内容加载到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 :(得分:1)

问题

通常,设置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