PyQt/QPopupMenu
Description
[modifier | modifier le wikicode]La classe QPopupMenu met à disposition un menu déroulant. Un tel menu peut être ajouté soit à un bouton (QPushButton), soit à une barre de menu (QMenuBar), soit être un menu de contexte affiché lorsque l'utilisateur clique avec le bouton droit de la souris dans une zone définie. Il est possible d'ajouter facilement des éléments à un menu par l'appel de la méthode insertItem(), qui permet d'ajouter un texte, une image, ou n'importe quel élément mettant à disposition des méthodes d'affichage (voir la classe QCustomMenuItem pour cela). De plus, tous ces éléments peuvent avoir une icône et une touche accélératrice.
Il est aussi possible d'ajouter des séparateurs (insertSeparator())
) ou bien des sous-menus en
passant à insertItem()
un objet définissant lui même un menu déroulant.
Cette classe offre de multiples possibilités. Il est possible d'ajouter des éléments cochables dans
un menu (la méthode setCheckable()
sur un élément du menu), mais un menu peut aussi
contenir un widget entier, comme par exemple un sélecteur de couleur. Une autre fonctionnalité
intéressante est la possibilité de déclarer le menu comme tear-off, à savoir qu'il est possible de
détacher le menu de son emplacement de départ pour le déplacer à un autre endroit à l'écran et
le laisser ouvert tout le temps pour accéder rapidement à ses fonctions. Toutes ces fonctionnalités
sont là pour fournir un maximum de flexibilité. Pour en savoir plus, consultez la page de référence
à l'adresse http://doc.trolltech.com/3.3/qpopupmenu.html.
Constructeur
[modifier | modifier le wikicode]# Constructeur pour la classe QPopupMenu
QPopupMenu ( QWidget parent = None, str name = "" )
Exemple
[modifier | modifier le wikicode]
PyQt3.* #!/usr/bin/python
# -*- coding : utf-8 -*-
#
# qpopupmenu.py
# Programme exemple pour la classe QPopupMenu
from qt import *
import sys
class Demo(QApplication) :
def init (self, args) :
QApplication. init (self,args)
# widget principal, il s'agit d'une fenêtre de dialogue
self.dialog = QDialog(None, "Dialog")
#Barre de menu
self.bar=QMenuBar(self.dialog, "Menubar")
#définition d'un premier menu
self.menu1 = QPopupMenu(None, "menu1")
self.menu1.insertItem("&Menu 1")
self.menu1.insertItem("M&enu 2")
self.menu1.insertSeparator()
ret = self.menu1.insertItem("Me&nu 3")
self.menu1.setItemEnabled(ret, False)
#définition d'un second menu avec sous menu
self.menu2 = QPopupMenu(None, "menu2")
self.menu2.insertTearOffHandle()
self.menu2.insertItem("Menu 1")
self.menu2.insertItem("Sous menu", self.menu1 )
#Il est possible d'ajouter n'importe quel widget au menu !
self.menu2.insertItem(QCheckBox("checkbox 1", self.menu2, "check1"))
#ajout des menus à la barre
self.bar.insertItem("&Bar 1", self.menu1)
self.bar.insertItem("B&ar 2", self.menu2)
self.dialog.show()
self.connect(self,SIGNAL("lastWindowClosed()"),self,SLOT("quit()"))
self.exec loop()
if name == "__main__" :
app=Demo(sys.argv)
PyQt4.* #!/usr/bin/python
# -*- coding : utf-8 -*-
#
# qmenu.py
# Programme exemple pour la classe QMenu
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys
class Demo(QApplication) :
def __init__(self, args) :
QApplication.__init__(self,args)
# widget principal, il s'agit d'une fenêtre de dialogue
self.dialog = QDialog()
self.dialog.setWindowTitle("Dialog")
#Barre de menu
self.bar=QMenuBar()
#définition d'un premier menu
self.menu1 = QMenu("menu1")
self.menu1.addMenu("&Menu 1")
self.menu1.addMenu("M&enu 2")
ret = self.menu1.addMenu("Me&nu 3")
self.vbox = QVBoxLayout()
self.vbox.addWidget(self.menu1)
self.vbox.addStretch(1)
self.dialog.setLayout(self.vbox)
self.dialog.show()
self.connect(self,SIGNAL("lastWindowClosed()"),self,SLOT("quit()"))
self.exec_()
if __name__ == "__main__" :
app=Demo(sys.argv)
|