QGraphicsEffect 立体边框
时间: 2023-12-12 07:04:04 浏览: 37
可以使用 QGraphicsDropShadowEffect 类为 QGraphicsItem 添加立体边框效果。以下是一个示例:
```cpp
QGraphicsRectItem rectItem;
rectItem.setRect(50, 50, 100, 100);
rectItem.setBrush(Qt::white);
rectItem.setPen(Qt::NoPen);
QGraphicsDropShadowEffect *shadowEffect = new QGraphicsDropShadowEffect;
shadowEffect->setColor(Qt::black);
shadowEffect->setBlurRadius(10);
shadowEffect->setOffset(5, 5);
rectItem.setGraphicsEffect(shadowEffect);
```
在上面的示例中,我们创建了一个 QGraphicsRectItem,并将其填充为白色,没有边框。然后,我们创建了一个 QGraphicsDropShadowEffect 并将其设置为黑色,模糊半径为10,偏移量为 (5, 5)。最后,我们将 QGraphicsDropShadowEffect 应用到 QGraphicsRectItem 上。
这将在 QGraphicsRectItem 周围创建一个立体边框效果。您可以根据需要调整阴影的颜色、模糊半径和偏移量。
相关问题
qraphicsItem 立体边框
QGraphicsItem可以通过设置边框线条的宽度和颜色来实现立体边框的效果。同时,可以通过设置item的Z值来控制其在场景中的前后顺序,从而实现立体效果。
以下是一个简单的示例代码,演示如何设置立体边框:
```python
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QColor, QPen
from PyQt5.QtWidgets import QGraphicsItem
class MyItem(QGraphicsItem):
def __init__(self):
super().__init__()
self.width = 100
self.height = 100
self.color = QColor(200, 200, 200)
self.border_color = QColor(50, 50, 50)
self.pen_width = 2
self.setZValue(1) # 设置Z值为1,使其显示在其他item的前面
def boundingRect(self):
return QRectF(-self.width / 2, -self.height / 2, self.width, self.height)
def paint(self, painter, option, widget):
# 绘制填充区域
painter.setBrush(self.color)
painter.drawRect(-self.width / 2, -self.height / 2, self.width, self.height)
# 绘制立体边框
pen = QPen(self.border_color, self.pen_width, Qt.SolidLine)
painter.setPen(pen)
# 绘制左侧面
painter.drawLine(-self.width / 2, -self.height / 2, -self.width / 2, self.height / 2)
painter.drawLine(-self.width / 2, -self.height / 2, self.width / 2 - self.pen_width, -self.height / 2)
painter.drawLine(-self.width / 2, self.height / 2, self.width / 2 - self.pen_width, self.height / 2)
# 绘制顶部面
painter.drawLine(-self.width / 2, -self.height / 2, self.width / 2 - self.pen_width, -self.height / 2)
painter.drawLine(self.width / 2, -self.height / 2, self.width / 2, self.height / 2)
painter.drawLine(-self.width / 2, -self.height / 2, self.width / 2 - self.pen_width, -self.height / 2)
# 绘制右侧面
painter.drawLine(self.width / 2, -self.height / 2, self.width / 2, self.height / 2)
painter.drawLine(self.width / 2 - self.pen_width, -self.height / 2, self.width / 2 - self.pen_width, self.height / 2)
painter.drawLine(self.width / 2, self.height / 2, self.width / 2 - self.pen_width, self.height / 2)
# 绘制底部面
painter.drawLine(-self.width / 2, self.height / 2, self.width / 2 - self.pen_width, self.height / 2)
painter.drawLine(self.width / 2, -self.height / 2, self.width / 2, self.height / 2)
painter.drawLine(-self.width / 2, self.height / 2, self.width / 2 - self.pen_width, self.height / 2)
```
在上述代码中,我们通过重载`boundingRect()`方法来定义我们的item所占用的矩形区域,然后在`paint()`方法中绘制我们的item。我们首先绘制填充区域,然后绘制四个面的线条,从而形成立体边框的效果。通过设置`QPen`的宽度和颜色,可以控制线条的粗细和颜色。最后,我们通过设置item的Z值来使其显示在其他item的前面,从而实现立体效果。
css 立体感的边框怎么设置
CSS 立体感的边框可以使用 `box-shadow` 属性来设置。`box-shadow` 属性用于在一个元素的周围创建一个或多个阴影效果,这些阴影效果可以用来创建立体感的效果。
下面是一个简单的示例,演示如何使用 `box-shadow` 属性来创建一个立体感的边框:
```css
.box {
border: none;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
}
```
在上面的示例中,我们将 `border` 属性设置为 `none`,然后使用 `box-shadow` 属性来添加一个大小为 10px、颜色为半透明黑色的阴影。这个阴影的偏移量为 (0, 0),也就是说它和元素的边框重合。
你可以根据需要调整阴影的大小、颜色、偏移量等属性,来创建不同样式的立体感边框。