【发布时间】:2014-11-19 11:33:29
【问题描述】:
我试图在我的小部件上绘制简单的板。
当我尝试自动执行此操作时,我的paintEvent 崩溃了。我认为这是由内部的 for 循环引起的,对吗?其他方式怎么画?
void Widget::paintEvent(QPaintEvent *event)
{
QPixmap myPix( QSize(20,20) );
QPainter painter(this);
for(int i = 0; i < 100; i+5){
painter.drawLine(QPointF(i,0),QPointF(i,max));
}
this->setPixmap(myPix);
}
【问题讨论】:
-
您是在某处定义
max,还是不小心将函数的地址传递给了QPointF? -
我认为
this->setPixmap(myPix);会递归调用您的绘画事件。 -
是的,最大值只是一些浮点值,我在从文本文件加载一些数据时设置它,它只是小部件的最大高度。我用 setPixmap 删除了这一行,但没有帮助(通常我也删除了 myPix 的声明:))
-
@vahancho 我认为我应该不同意你的观点,我在回答中添加了解释为什么paintevent中的setPixmap不会产生无限递归。
-
@Chernobyl,很好,但您的回答似乎无法解释为什么这段代码会崩溃。
标签: c++ qt for-loop paintevent