若该文为原创文章,未经允许不得转载
原博主博客地址:http://blog.csdn.net/qq21497936
原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062
本文章博客地址:http://blog.csdn.net/qq21497936/article/details/78475963
各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究
红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门)
Qt开发专栏:实用技巧(点击传送门)
需求
根据配置文件,可不改变程序只调整配置文件可调整主页面上的字符串。
原理
1.读取文件,固定格式(文件在本文章中省略)
2.写一串字符,使用QPainterPath
3.注意QPainter的时候,需要设置QPen和QBrush
代码
第一部分代码,保存一个QPainterPath
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); // init a shapeItem QColor color(Qt::red); QFont font("黑体", 24, QFont::Bold, true); QPoint point(200,200); QString str = "测试QPaintPath"; QPainterPath painterPath; painterPath.addText(QPointF(0,0), QFont("黑体", 24, QFont::Bold, true), tr("测试QPaintPath")); _pShapeItem = new ShapeItem(); _pShapeItem->setColor(color); _pShapeItem->setFont(font); _pShapeItem->setPosition(point); _pShapeItem->setText(str); _pShapeItem->setPainterPath(painterPath); }
第二部分代码,绘制出图形
void MainWindow::paintEvent(QPaintEvent *) { QPainter painter(this); // 保存之前的painter painter.save(); // 设置该屏幕坐标点为坐标系原点(0,0) 注意:必须要重新设置画笔和画刷 painter.setPen(_pShapeItem->getColor()); // 字体外部轮廓线条 painter.setBrush(_pShapeItem->getColor()); // 字体轮廓内部颜色 painter.translate(_pShapeItem->getPosition()); // 写字体的位置 painter.drawPath(_pShapeItem->getPainterPath()); // 画 // 回复之前的painter painter.restore(); }
第三部分代码,头文件ShapeItem.h
#ifndef SHAPEITEM_H #define SHAPEITEM_H #include <QPainterPath> #include <QColor> #include <QFont> class QPainterPath; class QPoint; class QColor; class QString; class QFont; class ShapeItem { public: ShapeItem(); public: void setPainterPath(QPainterPath &path) { _path = path; } void setPosition(QPoint &position) { _position = position; } void setColor(QColor &color) { _color = color; } void setText(QString &text) { _text = text; } void setFont(QFont &font) { _font = font; } public: QPainterPath getPainterPath() const { return _path; } QPoint getPosition() const { return _position; } QColor getColor() const { return _color; } QString getText() const { return _text; } QFont getFont() const { return _font; } private: QPainterPath _path; QPoint _position; QColor _color; QString _text; QFont _font; }; #endif // SHAPEITEM_H
第四部分代码,源文件ShapeItem.cpp
#include "shapeitem.h" ShapeItem::ShapeItem() { }
原博主博客地址:http://blog.csdn.net/qq21497936
原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062
本文章博客地址:http://blog.csdn.net/qq21497936/article/details/78475963