0

我想将 ObjectName 设置为我的 LineItem

但是当我使用

self.line.setItemName('%d' % i)

它不起作用并停止那里的程序。有人可以告诉我该怎么做吗?请

def createLineItem(self,start,end):

    global i
    i +=1

    self.line = QGraphicsLineItem(QLineF(start, end))
    print("~")
    self.line.setItemName('%d' % i)
    print("~~")
    print( "Line",self.line.objectName())
    self.scene().addItem(self.line)
4

1 回答 1

0

首先,你从哪里得到关于 QGraphicsLineItem 的 setItemName 方法的信息?QGraphicsLineItem 没有 setItemName 方法。另一方面,objectName 是 QObjects 的属性,但 QGraphicsLineItem 不是。保存名称的另一种方法是使用 data 方法:

KEY_NAME = 0 

# ...

def createLineItem(self,start,end):
    global i
    i +=1
    line = QGraphicsLineItem(QLineF(start, end))
    line.setData(KEY_NAME, '%d' % i)
    print( "Line", line.data(KEY_NAME))
    self.scene().addItem(line)
于 2019-05-05T19:20:19.193 回答