[PyKDE] Event chaining and passing parameters
Timothy Grant
timothy.grant at gmail.com
Thu Sep 16 20:22:30 BST 2004
On Thu, 16 Sep 2004 05:18:25 -0700, David Boddie <david at boddie.org.uk> wrote:
> On Wed, 15 Sep 2004 13:54:04, Timothy Grant wrote:
>
> > I have QListView that connects to a context menu (QPopupMenu) and
> > passes the item(s) to my showPopup method.
> >
> > The QActions that populate the QpopupMenu then call their own
> > processing methods.
>
> You might need to post some code that shows what you're doing.
>
> > My problem is that I don't know how to pass the QListViewItem(s) from
> > my showPopup method further down the call chain so that say the
> > editMethod knows which items need to be edited.
> >
> > I guess consisely put it is "How do I pass state data along the Event
> > call chain?"
>
> With signals and slots you can find out which object emitted the signal
> by calling self.sender() in the slot that receives it. You might be able
> to record this somewhere visible to your editMethod, although you don't
> say which object would have this method.
>
> If you post some fairly concise example code, we can probably work something
> out.
>
> David
OK, here is some *seriously* cut down code that probably doesn't even
work at the moment but which I hope illustrates the problem.
There are two comments in the code showing what I'd like to accomplish
class ContextPopupMenu(QPopupMenu):
def __init__(self, *args):
apply(QPopupMenu.__init__, (self,) + args)
self.editAction = QAction(self)
self.editAction.setText('Edit')
self.editAction.setMenuText('&Edit')
self.editAction.setStatusTip('Edit Stuff')
self.editAction.addTo(self)
def showMenu(self, item, pos):
#item is very useful here
self.exec_loop(pos)
class VagabondWindow(QMainWindow):
def __init__(self, library, *args):
apply(QMainWindow.__init__, (self,) + args)
self.context_menu = ContextPopupMenu()
self.list = DetailList(self)
self.connect(self.list,
SIGNAL('contextMenuRequested(QListViewItem *,
const QPoint &, int)'),
self.context_menu.showMenu)
self.connect(self.context_menu.editAction,
SIGNAL('activated()'),
self.edit)
def edit(self):
print "editing"
#how do I get item down here?
More information about the PyQt
mailing list