【QT开发笔记-基础篇】| 第五章 绘图QPainter | 5.13 抗锯齿

本节对应的视频讲解:B_站_视_频

https://www.bilibili.com/video/BV1YP4y1B7Ex
在这里插入图片描述


本节讲解抗锯齿效果

前面实现的效果中,仔细观看能看到明显的锯齿的效果,如下:

image-20221209112823922

此时,可以增加抗锯齿的效果。


1. 关联信号槽

首先,在 widget.cpp 的构造中,为 “抗锯齿” 复选框,关联信号槽

// 抗锯齿
connect(ui->chkAntialiasing, SIGNAL(toggled(bool)), this, SLOT(antialiasChanged()));

2. 声明并实现槽函数

首先,在 widget.h 中声明 antialiasChanged() 槽函数:

class Widget : public QWidget
{
private slots:
    void antialiasChanged();
};

然后,在 widget.cpp 中实现这个槽函数:

void Widget::antialiasChanged()
{
    ui->paintWidget->setAntialias(ui->chkAntialiasing->isChecked());
}

3. 实现 setAntialias

首先,在 PaintWidget.h 中声明 setAntialias 函数,并定义一个成员变量 mAntialias,如下:

class PaintWidget : public QWidget
{
public slots:
    void setAntialias(bool antialias);

private:
    bool mAntialias;
};

然后,在 PaintWidget.cpp 中,实现 setAntialias 函数:

void PaintWidget::setAntialias(bool antialias)
{
    this->mAntialias = antialias;
    update();
}

最后,由于上边调用了 update 之后,系统会自动调用 paintEvent

因此,在 paintEvent 中增加抗锯齿,来完成绘制

void PaintWidget::paintEvent(QPaintEvent *event)
{
    // 创建画家类的对象,参数为绘图设备。指定为this,表示在当前窗口绘制
    QPainter painter(this);
    painter.setPen(mPen);
    painter.setBrush(mBrush);
    
    if ( mAntialias ) {
        painter.setRenderHint(QPainter::Antialiasing, true);
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大轮明王讲QT

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值