我不知道如何连接定时器超时和鼠标事件类。当每 200 毫秒按下鼠标按钮时,我需要在“waterfield”(qwidget)中绘制一个新粒子。当我释放按钮画家不应该画更多。我在构造函数中得到了这个:
timertap.setInterval(200);
timertap.start();
connect(&timertap,SIGNAL(timeout()),this,SLOT(taptap()));
setMouseTracking(true);
在我的课堂上有 slot taptap()和 bool tapenable。
这是不起作用的代码:
void waterfield::taptap()
{
QMouseEvent *e;
if(tapenable && e->button()==Qt::LeftButton)
{
particle p;
int x=e->pos().x();
int y=e->pos().y();
p.position.y=y;
p.position.x=x;
zbiorczastek.push_back(p);
painter.drawEllipse(x,y,particlesize,particlesize);
}
}
void waterfield::mousePressEvent(QMouseEvent *e)
{
tapenable=true;
}
void waterfield::mouseReleaseEvent(QMouseEvent *e)
{
tapenable=true;
}
在我点击程序崩溃后。我认为这样做是个好主意。计时器设置为 200 毫秒,因此设置了每 200 毫秒的信号超时,插槽 taptap 接收它并检查是否可以通过 mousepressevent 设置或通过 mousereleaseevent 重置。有什么建议么?