0

我正在尝试获取 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()
4

2 回答 2

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))
于 2014-09-30T12:07:19.053 回答
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

于 2014-09-30T10:51:44.450 回答