2014-09-30 52 views
0

我想获得那是在qMenu上市,并根据从qMenu用户选择中的选择抓取文本 - camSelBtn,它会显示选择到QLineEdit的 - currentCamTxt从qMenu选择

但是当我我能够得到菜单工作,选择不起作用。

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

好吧,我设法在几个东西,如果有任何比这一个:)或更好的答案

def camMenu(self): 

    # -- Same stuff as I have written 

    menu.triggered.connect(self._camSelected) 

def _camSelected(self, action): 
    self.currentCamTxt.setText(action.text()) 

大为赞赏,认为以类似的编码增加,找出时尚,正如我在我的问题中发布的。

我仍然没有得到任何结果,如果我试图把在triggeredcreateConenctions

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)) 
+0

我试着实现你的代码进入我的,但是当我点击'setCameraBtn'时,没有显示相机列表 – dissidia 2014-10-02 07:28:57