PDA

View Full Version : Never get customContextMenuRequest() signal



implor
8th May 2010, 23:50
I'm trying to do a simpel context menu but I never get the customContextMenuRequest() signal. what mistake have I done?


from test1 import Ui_Dialog
from PyQt4 import QtGui, QtCore
import sys

class mytest(QtGui.QMainWindow):

def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.ui = Ui_Dialog()
self.ui.setupUi(self)
self.ui.listWidget.setSelectionMode(2)
self.ui.listWidget_2.setSelectionMode(2)

self.ui.listWidget.setContextMenuPolicy(3)

self.connect(self.ui.pushButton_3, QtCore.SIGNAL("clicked()"), self.addToList)
self.connect(self.ui.pushButton_2, QtCore.SIGNAL("clicked()"), self.rightLeft)
self.connect(self.ui.pushButton, QtCore.SIGNAL("clicked()"), self.moveLeft)
self.connect(self.ui.lineEdit, QtCore.SIGNAL("returnPressed()"), self.addToList)
self.connect(self.ui.listWidget, QtCore.SIGNAL("customContextMenuRequest()"), self.contextMenu)


def moveLeft(self):
for Item in self.ui.listWidget.selectedItems():
self.ui.listWidget_2.addItem(Item.text())
row = self.ui.listWidget.row(Item)
self.ui.listWidget.takeItem(row)


def rightLeft(self):
for Item in self.ui.listWidget_2.selectedItems():
self.ui.listWidget.addItem(Item.text())
row = self.ui.listWidget_2.row(Item)
self.ui.listWidget_2.takeItem(row)



def contextMenu(self):
print "hello"
menu = QtGui.QMenu()
moveUp = menu.addAction("Move Up")
menu.exec_(self.ui.listWidget.mapToGlobal(QtGui.QP oint(0,0)))


def addToList(self):
Item = self.ui.lineEdit.displayText()
if Item.isEmpty() == False:
self.ui.listWidget.addItem(Item)
self.ui.lineEdit.clear()
self.ui.lineEdit.setFocus()







if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
myapp = mytest()
myapp.show()
sys.exit(app.exec_())

wysota
9th May 2010, 00:14
Please doublecheck if you set the right context menu policy. You should be using enums and not numbers.

implor
9th May 2010, 09:33
I added Qt.CustomContextMenu insted of the number 3. but it say CustomContextMenu don't exist but its in the documentation. http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qt.html#ContextMenuPolicy-enum

(And I don't forget to import Qt :))

Any more good Ides?

implor
9th May 2010, 15:17
SOLVED!

I needed to write customContextMenuRequested(QPoint)