【发布时间】:2013-05-22 04:10:48
【问题描述】:
我在 Maya2012 中使用 Pyqt4 来制作类似 ui 的参考编辑器。我使用 QtableWidget 制作参考列表,并且每个单元格中都有子小部件。其中一个小部件是卸载或重新加载参考的复选框。 我遇到的问题是,如果直接在复选框中单击而不选择单元格,它不会做任何事情
这是我的代码:
def listConnections(self):
self.pos=self.sender().currentRow()
wid = self.list.ref_l.cellWidget(self.pos, 0).children()
self.text = self.list.list[self.pos]
self.ref()
for wt in wid:
if type(wt)== type(QCheckBox()):
wt.stateChanged.connect(self.changeState)
if type(wt)== type(QComboBox()):
wt.currentIndexChanged.connect(self.changeType)
我正在使用“itemSlectionChanged”信号调用该函数,因为这是我知道我可以检测到子小部件的唯一方法。 所有子小部件都是在我填写列表的那一刻制作的。
有什么方法可以做我想要的吗?
编辑:
这就是我调用函数的方式
self.list.ref_l.itemSelectionChanged.connect(self.listConnections)
这就是我在单元格中创建所有子小部件的方式
def fillList(self):
mayaRef = self.findRef()
if len(mayaRef)>0:
for count in range(0,len(mayaRef)):
self.ref_l.insertRow(count)
wid=QWidget()
cLayout=QHBoxLayout()
wid.setLayout(cLayout)
checkWid=QCheckBox()
nameWid=QLabel()
cLayout.addWidget(nameWid)
nameWid2=QLabel()
cLayout.addWidget(nameWid2)
comWid=QComboBox()
cLayout.addWidget(comWid)
self.ref_l.setCellWidget(count,0,wid)
self.ref_l 是我的 QTable Widget,这是我在原始代码中使用 self.list 调用的另一个代码
【问题讨论】:
-
什么都不做 changeState 槽没有被调用吗? 我用“itemSlectionChanged”信号调用函数是什么意思?您可能对此感兴趣:stackoverflow.com/questions/1063734/…
-
“我用“itemSlectionChanged”信号调用函数是什么意思?“-我的意思是我每次选择不同的单元格项目时都会调用这个函数。只有当我选择了单元格时才会调用 ChangeState,但如果我直接按下 checkButton 它不会被调用。