赞
踩
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())
可以分成两类,一类是提供点坐标绘制文本,一类是提供方框绘制文本。区别在于提供点坐标进行绘制的时候,点是在文本的左下角。而提供矩形的时候,矩形的点是在文本的左上角,同时也是矩形的左上角。
代码示例:
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); }
可以看到两个函数提供的点坐标锚定的是文本的不同位置,使用时要多多注意。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。