Ho un'applicazione in cui creo voci di menu e desidero impostare la visibilità di un particolare sottomenu.Come nascondere un sottomenu in QMenu
Ho provato a utilizzare setVisibility(False)
, ma questo non ha funzionato. setVisibility()
funziona per le voci di menu, ma non per i sottomenu in QMenus.
Dai un'occhiata alla il frammento di codice qui sotto:
import sys
from PyQt4 import QtGui
class Window(QtGui.QWidget):
def __init__(self, parent=None):
super(Window, self).__init__(parent)
self.menu = QtGui.QMenu()
self.actio1 = QtGui.QAction('One', self)
self.actio2 = QtGui.QAction('Two', self)
self.menu.addAction(self.actio1)
self.menu.addAction(self.actio2)
self.actio1.setVisible(False)
self.submenu = QtGui.QMenu('submenu', self)
self.submenu.addAction('sub one')
self.submenu.addAction('sub two')
self.menu.addMenu(self.submenu)
self.submenu2 = QtGui.QMenu('submenu 2', self)
self.submenu2.addAction('sub 2 one')
self.submenu2.addAction('sub 2 two')
self.menu.addMenu(self.submenu2)
self.submenu2.setVisible(False)
layout = QtGui.QHBoxLayout()
layout.addWidget(self.menu)
self.setLayout(layout)
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
w = Window()
w.show()
sys.exit(app.exec_())
Nell'esempio di cui sopra, posso nascondere la voce di menu denominata "One", ma non il sottomenu chiamato "sottomenu 2"
Qualcuno può darmi un'idea ...
Amico thx per la risposta molto veloce ... Ha funzionato perfettamente ... – Rao
@PBLNarasimhaRao non ne parlano – will
Funziona perfettamente anche in C++ QT: MySubMenu-> menuAction() -> setVisible (true); Top google hit dice che non si può fare, quindi ho pensato di condividerlo qui. Non è necessario eliminare i sottomenu e riaggiungerli, il che può causare un arresto anomalo su osx. – Marcus10110