如何在选中时删除QGraphicsItem周围的边框?

时间:2012-06-11 17:48:21

标签: c++ qt qgraphicsitem

非常基本的问题,但我无法通过谷歌找到解决方案。在QT中选择图形项目时,它周围有一个边框。我想知道如何设置这个边界是不可见的。感谢。

3 个答案:

答案 0 :(得分:13)

没有界面可以禁用内置QGraphicsItems的选择边框的绘制。我能想到的唯一方法是从内置项中派生自己的项并覆盖paint()函数:

void MyRectItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
    QStyleOptionGraphicsItem myOption(*option);
    myOption.state &= ~QStyle::State_Selected;
    QGraphicsRectItem::paint(painter, &myOption, widget);
}

它没有经过测试,但基本上你会传递一个选项副本并清除选择状态标志,然后再将它传递给实际的paint()

答案 1 :(得分:5)

如果您的QGraphicsItem派生自QAbstractGraphicsShapeItem,那么您可以简单地禁用它的笔,例如:

myShape->setPen(Qt::NoPen);

答案 2 :(得分:0)

对于那些试图用 python 搞清楚的人:

def paint(self, painter, option, a):
    option.state = QStyle.State_None
    return super(MyClassName, self).paint(painter,option)