QPainter 绘制不是实心矩形
时间: 2024-12-17 08:10:00 浏览: 7
在Qt中,使用QPainter可以绘制非实心矩形,也就是开放边框的矩形。这可以通过设置QPen的样式来实现,特别是当样式设置为`Qt::NoPen`时。以下是如何在`PaintArea`类中演示这一点:
```cpp
// paintEvent()函数的示例
void PaintArea::paintEvent(QPaintEvent *) {
QPainter painter(this);
painter.setPen(QPen(Qt::NoPen)); // 设置无边框
painter.setBrush(brush); // 设置想要的颜色作为填充
switch (shape) {
case Rectangle:
if (pen.width() > 0) { // 如果有宽度,画边框
painter.drawRect(rect());
}
painter.drawRoundedRect(rect(), 10, 10); // 绘制圆角矩形,留出内部空间
break;
// 其他形状类似...
}
}
```
在这里,我们设置了笔(QPen)为无边框(`Qt::NoPen`),这意味着不画出矩形的边框。然后通过调用`drawRoundedRect()`绘制带有指定半径的圆角矩形,这样就得到了一个空心的效果。
相关问题
在Qt中,如何使用QPainter绘制一个填充为纯绿色的实心矩形?
在Qt中,你可以使用`QPainter`类及其成员函数来绘制图形,包括填充颜色的矩形。以下是一个简单的步骤说明:
首先,你需要创建一个`QPainter`对象并绑定到你要绘图的`QWidget`、`QPixmap`或者其他绘画表面:
```cpp
QPainter painter;
painter.begin(yourWidget); // 或者 yourPixmap
```
然后,设置画刷的颜色为纯绿色,例如使用RGB值`Qt::green`:
```cpp
QColor greenColor(Qt::green);
QPen greenPen(greenColor, 2.0); // 设置笔宽度为2像素
painter.setPen(greenPen);
```
接着,调用`drawRect()`函数,传入矩形的位置和尺寸:
```cpp
int x = 0; // 矩形左上角x坐标
int y = 0; // 矩形左上角y坐标
int width = 100; // 矩形宽度
int height = 50; // 矩形高度
painter.drawRect(x, y, width, height); // 绘制矩形
```
最后,记得结束`QPainter`上下文:
```cpp
painter.end();
```
QPainter 绘制透明度为99.9%的背景
要在 QPainter 中绘制透明度为 99.9% 的背景,可以使用 setOpacity() 函数将绘制操作的透明度设置为 0.999,然后使用 drawRect() 函数绘制一个与绘图区域大小相同的矩形。
下面是一个示例代码:
```python
from PyQt5.QtGui import QPainter, QColor, QBrush
from PyQt5.QtCore import Qt
# 在 paintEvent 事件处理函数中使用 QPainter 绘制透明度为 99.9% 的背景
def paintEvent(self, event):
painter = QPainter(self)
painter.setOpacity(0.999)
painter.setBrush(QBrush(QColor(255, 255, 255, 255), Qt.SolidPattern))
painter.drawRect(self.rect())
```
上述代码中,使用 setOpacity() 函数将绘制操作的透明度设置为 0.999,也可以直接传入一个浮点数参数。然后使用 setBrush() 函数设置绘制矩形的画刷,这里使用了一个白色的画刷,绘制实心矩形。最后使用 drawRect() 函数绘制一个与绘图区域大小相同的矩形。
阅读全文