我有一个QGraphicsWidget,它用于绘制和显示许多项目,包括使用QGraphicsProxyWidget的QWebEngineView。我可以将Web内容加载到QWebEngineView中,但是我想使 View 包含边框。我已经使用“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时的结果: