QT开发中文网

void AGraphicsItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { if (event->buttons() == Qt::LeftButton) { // 计算鼠标偏移量 qreal dx = event->pos().x() - event->lastPos().x(); qreal dy = event->pos().y() - event->lastPos().y()...

根据代码的逻辑,当状态中包含”右”位(flgs & 0x01 == 0x01)时,将宽度(w)加上dx。而当状态中包含”左”位((flgs >> 1 & 0x01) == 0x01)时,将宽度(w)减去dx。这意味着在执行左移操作时,宽度应该是减小的。

然而,在你提供的代码中,并没有对高度(h)进行相应的处理。因此,在执行左移操作时,只有横坐标(x)发生了改变,而纵坐标(y)和高度(h)保持不变。

如果你想实现左移操作时同时缩小色块的效果,请修改代码如下:

if ((flgs >> 1 & 0x01) == 0x01) { // 左
    x = x + dx;
    w = w - dx;
    h = h - dy; // 添加此行代码
    setFlag(QGraphicsItem::ItemIsMovable, false);
}

通过添加h = h - dy;来根据鼠标纵向偏移量(dy)更新高度(h),使得在执行左移操作时同时缩小色块。

记得在使用修改后的代码之前确保已正确设置相关信号和槽函数,并定义了m_grapSize以及其他需要用到的属性。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=10212

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?