我正在尝试在QWidget
窗口中绘制一个简单的二维图形。有一个已paintEvent
定义且该类的painter 对象QPainter
也已定义。我的绘图包含我需要在不同位置多次绘制的元素,例如线条、文本等。为此,我使用函数来绘制具有不同位置的这些线条。对于文本也是如此。为了使程序更短,也模块化。
该paintEvent
函数正在调用用于计算和绘制的函数。
如何将在函数QPainter
中定义的画家对象传递paintEvent
给函数。
例如
void Classname::drawText(QString text, int PosX, int PosY, QPainter painter)
{
QSize size=this->size();
QFont times("Helvetica [Cronyx]", 10);
QFontMetrics box(times);
int boxWidth = box.width(text);
int boxHeight = box.height();
painter.setFont(times);
painter.setPen(Qt::white);
painter.drawText(PosX,PosY,text);
}
然后我收到一个错误,其中 vc++ 环境告诉我类的画家对象不允许使用类型名QPainter
。
如果我定义QPainter
painter1对象,如下所示:
void Classname::drawText(QString text, int PosX, int PosY, QPainter painter)
{
QPainter painter1;
QSize size=this->size();
QFont times("Helvetica [Cronyx]", 10);
QFontMetrics box(times);
int boxWidth = box.width(text);
int boxHeight = box.height();
painter.setFont(times);
painter.setPen(Qt::white);
painter.drawText(PosX,PosY,text);
}
程序编译但没有输出。
这是代码的一部分,我QPainter
在所有函数中定义类的对象。
我读了这个线程,但说明不清楚。必须在所有绘图实例中调用begin()
and函数还是在函数中只调用一次?end()
paintEvent