如何在 QWebEngineView 周围显示边框?
Posted
技术标签:
【中文标题】如何在 QWebEngineView 周围显示边框?【英文标题】:How do I display a border around a QWebEngineView? 【发布时间】:2018-09-24 19:03:29 【问题描述】:我有一个 QGraphicsWidget,我用它来绘制和显示许多项目,包括使用 QGraphicsProxyWidget 的 QWebEngineView。我能够将网页内容加载到 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);
这是它目前的样子: 我希望它看起来如何:
【问题讨论】:
我假设您想要浏览器窗口周围的边框?那将在创建包含浏览器的窗口的 qml 中 是的,我想要浏览器窗口周围的边框,但我没有使用 QML……只是上面的代码。这些视图是在运行时创建的。 我注意到的第一件事是糟糕的样式表。让我试着修复它,我会回复你的。敬请期待。 同时尝试:border: 10px solid black;
.
对不起,没用。
【参考方案1】:
问题
通常,设置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 时的结果:
【讨论】:
再次感谢您...解决方案完美!以上是关于如何在 QWebEngineView 周围显示边框?的主要内容,如果未能解决你的问题,请参考以下文章
拖动某些东西时如何在 UIElement 周围显示一个简单的边框