5

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

4

3 回答 3

15

内置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);
}

它没有经过测试,但基本上你制作了 option 的副本并在将其传递给实际的paint().

于 2012-06-11T19:22:54.193 回答
7

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

myShape->setPen(Qt::NoPen);
于 2012-09-28T18:20:14.330 回答
1

对于那些试图使用 python 解决的人:

def paint(self, painter, option, a):
    option.state = QStyle.State_None
    return super(MyClassName, self).paint(painter,option)
于 2021-07-21T13:58:17.333 回答