我创建了一个 Qt 项目,它在小部件上显示一个圆圈。
然后我有一个方法,每次调用该方法时都会在不同位置重新绘制圆。
我想要的是在 for 循环中运行该方法,比如说十次,并显示每秒重绘圆圈的 10 个位置。
大致如下:
void method::paintEvent(QPaintEvent * p)
{
//code
for(int i=0; i<10;i++)//do this every second
{
method(circle[i]); //co-ordinates change
circle[i].pain( & painter); //using QPainter
}
//code
}
我读过有关 QTimer 的文章,但不知道如何使用它。而且睡眠功能不起作用。
正如你所猜测的,QTimer http://qt-project.org/doc/qt-5/QTimer.html是此处使用的正确机制。如何进行设置?
这是一种选择:
class MyClass : public QObject
{
public:
MyClass():i(0)
{
QTimer::singleShot(1000,this,SLOT(callback()));//or call callback() directly here
} //constructor
protected:
unsigned int i;
void paintEvent(QPaintEvent * p)
{
//do your painting here
}
public slots:
void callback()
{
method(circle[i]); //co-ordinates change
//circle[i].pain( & painter); //don't use QPainter here - call update instead
update();
++i;//increment counter
if(i<10) QTimer::singleShot(1000,this,SLOT(callback()));
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)