thanks!

On Dec 7, 2:57 pm, Justin Israel <[email protected]> wrote:
> Your QDialog has a function called mapToGlobal(), which is inherits because
> its a subclass of QWidget.
> mapToGlobal takes a point that is local to the current object and remaps it
> to the global position.
>
> When your button calls that custom context menu slot, popup(), it passes it
> the position (point) of where the
> click occurred, so that you can popup your menu at that point.
> Your menu has a method called exec_(), which will show the popup, start an
> event loop, and block until the popup is done.
> QMenu.exec_() takes a point as an argument of where to show the popup, so
> we pass that global position into it.
> exec_() will end once the popup closes.
>
>
>
>
>
>
>
> On Wed, Dec 7, 2011 at 1:37 PM, notanymike <[email protected]> wrote:
> > Yeah, I'm still unclear as to what's happening in the popup() function
> > of the code. Specifically:
>
> > action = menu.exec_(self.mapToGlobal(pos))
>
> > I'm guessing it's just executing or generating the menu, but the extra
> > _(self.mapToGlobal(pos)) I'm not sure how to use elsewhere...
>
> > On Dec 6, 9:55 pm, Justin Israel <[email protected]> wrote:
> > > You are making a simple dialog that only contains a pushbutton that is
> > added to a vertical layout. You set the context menu option to use a custom
> > menu instead of performing its own default action. And you connect a signal
> > that is emitted when your right click the button to a custom slot that
> > creates a popup menu and shows it.
> > > Was there a specific area of the code you wanted more details about?
>
> > > On Dec 6, 2011, at 9:13 PM, notanymike <[email protected]> wrote:
>
> > > > I found a couple of tutorials and merged them and that seemed to work,
> > > > though I still don't know how its working. Could anyone care to
> > > > explain:
>
> > > > import sip
> > > > import maya.cmds as cmds
> > > > import maya.OpenMayaUI as mui
> > > > from PyQt4.QtCore import *
> > > > from PyQt4.QtGui import *
>
> > > > def getMayaWindow():
> > > >    ptr = mui.MQtUtil.mainWindow()
> > > >    return sip.wrapinstance(long(ptr), QObject)
>
> > > > class Form(QDialog):
>
> > > >    def __init__(self, parent=None):
> > > >        super(Form, self).__init__(parent)
> > > >        self.setObjectName('mainUI')
> > > >        self.mainLayout = QVBoxLayout(self)
> > > >        self.myButton = QPushButton('myButton')
> > > >        self.myButton.setContextMenuPolicy(Qt.CustomContextMenu)
> > > >        self.myButton.customContextMenuRequested.connect(self.popup)
> > > >        self.myButton.clicked.connect(self.selectJoint)
> > > >        self.mainLayout.addWidget(self.myButton)
>
> > > >    def popup(self, pos):
> > > >        #for i in self.tv.selectionModel().selection().indexes():
> > > >        #    print i.row(), i.column()
> > > >        menu = QMenu()
> > > >        jointAction = menu.addAction("This is an action")
> > > >        action = menu.exec_(self.mapToGlobal(pos))
> > > >        if action == jointAction:
> > > >            self.myjoint = cmds.joint()
>
> > > >    def selectJoint(self):
> > > >        cmds.select(self.myjoint)
>
> > > > global app
> > > > global form
> > > > app = qApp
> > > > form = Form(getMayaWindow())
> > > > form.show()
>
> > > > On Dec 2, 1:57 pm, Justin Israel <[email protected]> wrote:
> > > >> Though this approach would make it a Menu button, activated from a
> > normal
> > > >> left click.
>
> > > >> On Fri, Dec 2, 2011 at 1:53 PM, David Moulder <
> > [email protected]>wrote:
>
> > > >>> Alternatively you could try
>
> > > >>>    1.  QMenu <http://doc.qt.nokia.com/latest/qmenu.html> *menu =
> > new QMenu<http://doc.qt.nokia.com/latest/qmenu.html>
> > > >>>    (this);
> > > >>>    2.  menu->addAction("Testaaaaaaaaaaaaaaaaaaaaa");
> > > >>>    3.  menu->addAction("Test1");
> > > >>>    4.  menu->addAction("Test2");
> > > >>>    5.
> > > >>>    6.  pushButton->setMenu(menu);
>
> > > >>> On Fri, Dec 2, 2011 at 9:47 PM, David Moulder <
> > [email protected]>wrote:
>
> > > >>>> I'm not at python console to test this but from memory you need to
> > set
> > > >>>> the contextMenu property and then hook up the signal to slot to
> > show your
> > > >>>> menu.
>
> > > >>>> Qt::ContextMenuPolicy<
> >http://doc.qt.nokia.com/latest/qt.html#ContextMenuPolicy-enum>
>
> > > >>>> and
>
> > > >>>>  customContextMenuRequested<
> >http://doc.qt.nokia.com/latest/qwidget.html#customContextMenuRequested>
>
> > > >>>> Good luck.
>
> > > >>>> -Dave
>
> > > >>>> On Fri, Dec 2, 2011 at 9:13 PM, notanymike <[email protected]>
> > wrote:
>
> > > >>>>> How can one make a drop-down command menu appear when
> > right-clicking
> > > >>>>> on a button in a Maya window using pyqt?
>
> > > >>>>> --
> > > >>>>> view archives:http://groups.google.com/group/python_inside_maya
> > > >>>>> change your subscription settings:
> > > >>>>>http://groups.google.com/group/python_inside_maya/subscribe
>
> > > >>>> --
> > > >>>> David Moulder
> > > >>>>http://www.google.com/profiles/squish3d
>
> > > >>> --
> > > >>> David Moulder
> > > >>>http://www.google.com/profiles/squish3d
>
> > > >>> --
> > > >>> view archives:http://groups.google.com/group/python_inside_maya
> > > >>> change your subscription settings:
> > > >>>http://groups.google.com/group/python_inside_maya/subscribe
>
> > > > --
> > > > view archives:http://groups.google.com/group/python_inside_maya
> > > > change your subscription settings:
> >http://groups.google.com/group/python_inside_maya/subscribe
>
> > --
> > view archives:http://groups.google.com/group/python_inside_maya
> > change your subscription settings:
> >http://groups.google.com/group/python_inside_maya/subscribe

-- 
view archives: http://groups.google.com/group/python_inside_maya
change your subscription settings: 
http://groups.google.com/group/python_inside_maya/subscribe

Reply via email to