我正在对 a 进行子类化,QLabel
并尝试在用户用鼠标拖动(或旋转)图像时旋转它。目前我只是顺时针旋转每个鼠标移动事件:
void RotoTest::slotMouseMoved()
{
currentRotation += 1;
rotate(currentRotation % 360);
}
void RotoTest::rotate(int degree)
{
QPixmap pixmap(originalPixmap);
QPixmap rotatedMap(pixmap.size());
QPainter p(&rotatedMap);
p.translate(pixmap.size().width() / 2, pixmap.size().height() / 2);
p.rotate(degree);
p.translate(-pixmap.size().width() / 2, -pixmap.size().height() / 2);
p.drawPixmap(0, 0, pixmap);
this->setPixmap(rotatedMap);
}
这可以工作和旋转,但问题是图像变得非常滞后、抖动和无响应,尤其是对于给定实例,鼠标移动得更快或更长时间。我怀疑这是由于鼠标移动时发送了大量信号而发生的。有人对平滑旋转的方法有什么建议吗?我正在寻找图像旋转得一样好QDial
。