QT开发中文网

Qt 5.14 的 widgets 程序如何实现字体描边效果?

在Qt 5.14中,您可以通过使用QPainter和QFontMetrics来实现字体的描边效果。下面是一个简单的示例代码:

#include <QtWidgets>

class CustomWidget : public QWidget
{
public:
    explicit CustomWidget(QWidget *parent = nullptr) : QWidget(parent)
    {
        setFixedSize(400, 300);
    }

protected:
    void paintEvent(QPaintEvent *event) override
    {
        Q_UNUSED(event);

        QPainter painter(this);
        painter.setRenderHint(QPainter::Antialiasing);

        // 设置字体和描边颜色
        QFont font("Arial", 30);
        font.setBold(true);
        QColor textColor(Qt::white);
        QColor outlineColor(Qt::black);

        // 创建路径并设置文本内容
        QPainterPath path;
        path.addText(50, 150, font, "Hello, World!");

        // 描边宽度和精确度
        qreal strokeWidth = 2.0;
        int strokePrecision = 100;

        // 创建描边器,并设置属性
        QPainterPathStroker stroker;
        stroker.setWidth(strokeWidth);
		stroker.setCurveThreshold(strokeWidth / strokePrecision);

		// 获取描边后的路径
		QPainterPath outlinedPath = stroker.createStroke(path);

		painter.fillPath(outlinedPath, outlineColor); // 绘制描边效果
		painter.drawPath(outlinedPath);               // 绘制填充效果

		painter.setPen(textColor);
		painter.setFont(font);
		painter.drawText(50, 150, "Hello, World!");   // 绘制原始文本(无描边)
    }
};

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    CustomWidget widget;
    widget.show();

    return app.exec();
}

在上面的示例中,我们重写了一个自定义的QWidget类,在其paintEvent函数中实现字体描边效果。我们使用QPainterPath和QPainterPathStroker来创建和应用描边效果,并使用QPainter绘制填充和描边后的路径。最后,我们使用QPainter绘制原始文本(无描边)。

通过调整描边宽度(strokeWidth)和精确度(strokePrecision),您可以根据需要自定义描边效果的样式。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=12113

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?