当前位置:   article > 正文

Qt-QPainter drawText方法不同重载之间的区别

Qt-QPainter drawText方法不同重载之间的区别

QPainter类的drawText方法有如下重载:

void 
drawText(const QPointF &position, const QString &text)
void 
drawText(const QPoint &position, const QString &text)
void 
drawText(int x, int y, const QString &text)
void 
drawText(const QRectF &rectangle, int flags, const QString &text, QRectF *boundingRect = nullptr)
void 
drawText(const QRect &rectangle, int flags, const QString &text, QRect *boundingRect = nullptr)
void 
drawText(int x, int y, int width, int height, int flags, const QString &text, QRect *boundingRect = nullptr)
void 
drawText(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

可以分成两类,一类是提供点坐标绘制文本,一类是提供方框绘制文本。区别在于提供点坐标进行绘制的时候,点是在文本的左下角。而提供矩形的时候,矩形的点是在文本的左上角,同时也是矩形的左上角。
代码示例:

void MainWindow::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    auto font = painter.font();
    font.setPixelSize(20);
    painter.setFont(font);
    painter.translate(100, 100);
    painter.drawLine(-100, 0, 500, 0);
    painter.drawLine(0, -500, 0, 100);
    painter.setPen(Qt::blue);
    QString text1 = "Hello";
    painter.drawText(0, 0, text1);
    QRect rect(0, 0, 100, 100);
    QString text2 = "World";
    painter.drawText(rect, text2);
    painter.setPen(Qt::red);
    painter.drawRect(rect);
    return QMainWindow::paintEvent(event);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

在这里插入图片描述
可以看到两个函数提供的点坐标锚定的是文本的不同位置,使用时要多多注意。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/271297
推荐阅读
相关标签
  

闽ICP备14008679号