gpt4 book ai didi

c++ - 使用鼠标拖动旋转 QLabel

转载 作者:太空宇宙 更新时间:2023-11-04 14:14:34 24 4
gpt4 key购买 nike

我正在对 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 一样完美旋转的图像。

最佳答案

如果没有看到更多代码,我不清楚,但可能是堆积了太多事件。如果是这样,那么 1) 这是一个惊喜,因为 Qt 应该悄悄地负责将许多相同的事件压缩成几个,并且 2) 您可以通过在处理输入事件的插槽代码中限制对 update() 的调用来自己完成. (或者,由于您是 QLabel 的子类,它会去某处...?)

参见 http://qt-project.org/forums/viewthread/12257解释和代码。

话又说回来,这可能完全是找错了树。这就是为什么我们有否决按钮;)

关于c++ - 使用鼠标拖动旋转 QLabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12362486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com