qt 绘制的是绝对坐标还是相对坐标
时间: 2023-07-13 20:27:08 浏览: 99
在Qt中,绘制的坐标是相对于所绘制的QWidget控件的坐标系的。也就是说,如果你想在QWidget上绘制一个图形或文本,你需要使用QWidget的坐标系来定义绘制的位置,而不是屏幕的绝对坐标。
在QWidget的坐标系中,左上角是原点(0,0),x轴向右延伸,y轴向下延伸。因此,如果你想在QWidget的某个位置绘制一个图形或文本,你需要指定相对于QWidget左上角的偏移量(x, y)。
例如,下面的代码演示如何在QWidget的中心点绘制一个文本:
```
void MyWidget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.setPen(Qt::black);
painter.setFont(QFont("Arial", 12));
QString text = "Hello, World!";
int textWidth = painter.fontMetrics().width(text);
int textHeight = painter.fontMetrics().height();
int x = (width() - textWidth) / 2; // 计算x坐标
int y = (height() - textHeight) / 2; // 计算y坐标
painter.drawText(x, y, text);
}
```
在这个例子中,我们首先计算文本的宽度和高度,然后计算出文本应该在QWidget中心点的坐标,最后使用QPainter的drawText()函数在指定位置绘制文本。注意,x和y是相对于QWidget左上角的偏移量。
阅读全文