我正在尝试获取qMenu中列出的选择,并根据qMenu中的用户选择 - camSelBtn
,它会将选择显示在qLineEdit中 - currentCamTxt
然而,虽然我能够使菜单正常工作,但选择不起作用。
def camMenu(self):
allCams = cmds.ls(type='camera', visible = 1)
camLs = cmds.listRelatives(allCams, p=1)
menu = QMenu("menu", self.camSelBtn)
for n in camLs:
menu.addAction(QAction(n, menu))
self.camSelBtn.setMenu(menu)
def createConnections(self):
self.connect(self.setCameraBtn, SIGNAL('clicked()'), self.setCamera)
def setCamera(self):
for sel in self.camMenu.menu():
self.currentCamTxt.setText()
答案 0 :(得分:0)
好的,我已经设法通过添加更多东西找到了
def camMenu(self):
# -- Same stuff as I have written
menu.triggered.connect(self._camSelected)
def _camSelected(self, action):
self.currentCamTxt.setText(action.text())
非常感谢,如果有更好的答案,而不是这个:)或者,它的编码方式与我在我的问题中发布的方式类似。
如果我尝试将triggered
放入createConenctions
答案 1 :(得分:0)
新款式信号插槽更易于使用。
def camMenu(self):
menu = QMenu()
# menu.hovered.connect(lambda name="MainMenu": self.setCamera(name))
for n in camLs:
action = QAction(QIcon(), n, None)
action.hovered.connect(lambda name=n: self.setCamera(name))
# action.triggered.connect(lambda name=n: self.setCamera(name))
def setCamera(self, name):
self.currentCamTxt.setText(name)
...如果您只是设置文本值,则不需要setCamera方法。
action.hovered.connect(lambda name=n: self.currentCamTxt.setText(name))