gpt4 book ai didi

c++ - 如何在 QWebEngineView 周围显示边框?

转载 作者:搜寻专家 更新时间:2023-10-31 02:05:06 34 4
gpt4 key购买 nike

我有一个 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);

这是它目前的样子: enter image description here我希望它看起来像: enter image description here

最佳答案

问题

通常,设置 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 的子级,并改为设置父级 widget 的样式。

例子

这是我为您准备的示例,说明如何更改代码以实现建议的解决方案:

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

关于c++ - 如何在 QWebEngineView 周围显示边框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52485735/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com