Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 未重新绘制实体的句柄?_Qt_Qt4 - Fatal编程技术网

Qt 未重新绘制实体的句柄?

Qt 未重新绘制实体的句柄?,qt,qt4,Qt,Qt4,我试着为一个矩形写句柄,这样它就可以调整大小了。这类工作: 但一旦手柄被稍微拖动一点,大多数手柄就会从实心填充变为仅轮廓。还有一些奇怪的手工艺品遗留在手柄曾经所在的地方。最终,一些手柄完全停止工作。有人能解释我看到的这些事情吗?这种做法合理吗?我仍然不确定为什么必须实现boundingRect()——看起来对象应该只是保持它们作为状态变量的位置和大小 非常感谢您的建议。您的问题很可能发生,因为您正在项目的boundingRect()之外绘制句柄 boundingRect()在很多情况下都需要实

我试着为一个矩形写句柄,这样它就可以调整大小了。这类工作:

但一旦手柄被稍微拖动一点,大多数手柄就会从实心填充变为仅轮廓。还有一些奇怪的手工艺品遗留在手柄曾经所在的地方。最终,一些手柄完全停止工作。有人能解释我看到的这些事情吗?这种做法合理吗?我仍然不确定为什么必须实现boundingRect()——看起来对象应该只是保持它们作为状态变量的位置和大小


非常感谢您的建议。

您的问题很可能发生,因为您正在项目的boundingRect()之外绘制句柄

boundingRect()
在很多情况下都需要实现,因为您在
paint()
函数中做了一些有趣的事情,这可能超出了基类所能知道的范围

对于这种情况,一个很好的调试技巧是从paint()函数中实际绘制boundingRect(),并确保可见矩形适当地包含项目。例如:

painter->setPen( Qt::red )
painter->drawRect( boundingRect() );

如果您看到您的任何项目都在该矩形之外绘制,那么它将导致绘制瑕疵,因为QGraphicscene依赖其准确性来确定场景的哪些部分需要重新绘制。

谢谢Chris。我的右把手工作正常。当用左手柄折叠矩形时,右边缘会移动,这显然不是我想要的。有什么线索表明哪里出了问题吗?任何对此感兴趣的人,请将您的github用户名发送给我:github.com/daviddoria/QtHandleItem