在 Qt 中使用 QPainter 绘制加粗线条可以通过设置画笔(QPen)的宽度实现。以下是完整示例代码和分步解释:
#include <QApplication>
#include <QWidget>
#include <QPainter>
class CustomWidget : public QWidget {
protected:
void paintEvent(QPaintEvent*) override {
QPainter painter(this);
// 设置画笔属性(关键步骤)
QPen pen;
pen.setWidth(5); // 设置线条宽度(加粗)
pen.setColor(Qt::black); // 设置颜色
painter.setPen(pen);
// 绘制一条水平线
painter.drawLine(50, 50, 200, 50);
// 绘制一条垂直线(演示不同方向)
painter.drawLine(50, 100, 50, 200);
}
};
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
CustomWidget w;
w.resize(300, 300);
w.setWindowTitle("加粗线条示例");
w.show();
return a.exec();
}
关键点说明:
- 画笔设置:
setWidth()
:控制线条粗细(单位:像素)setColor()
:设置线条颜色(支持Qt::GlobalColor枚举或RGB值)- 可选参数:
setCapStyle()
(端点样式)、setJoinStyle()
(连接点样式)
- 坐标系统:
- 原点(0,0)在窗口左上角
- X轴向右增长,Y轴向下增长
- 扩展功能:
// 虚线样式 pen.setStyle(Qt::DashLine); // 渐变填充(需配合QBrush) QLinearGradient grad(0,0,100,0); grad.setColorAt(0, Qt::red); grad.setColorAt(1, Qt::blue); pen.setBrush(grad); // 抗锯齿(更平滑的边缘) painter.setRenderHint(QPainter::Antialiasing);
运行效果:
- 显示一个300x300窗口
- 包含两条5像素宽的黑色线条
- 水平线从(50,50)到(200,50)
- 垂直线从(50,100)到(50,200)
可根据需要调整:
- 坐标值改变线条位置
- 宽度值改变粗细
- 颜色值改变线条颜色
- 添加
setRenderHint(QPainter::Antialiasing)
获得更平滑的边缘效果