5
Mam aplikację, w której generuję elementy menu i chcę ustawić widoczność konkretnego podmenu.Jak ukryć podmenu w QMenu
Próbowałem używać setVisibility(False)
, ale to nie zadziałało. setVisibility()
działa dla pozycji menu, ale nie dla podmenu w QMenus.
Zapraszamy do obejrzenia fragmentu kodu poniżej:
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_())
w powyższym przykładzie, mogę ukryć element menu o nazwie „One”, ale nie podmenu o nazwie „submenu 2”
Czy ktoś może mi dać pomysł ...
Dude thx za bardzo szybką odpowiedź ... To działało idealnie ... – Rao
@PBLNarasimhaRao nie wspominając już – will
Działa to również świetnie w C++ QT: MySubMenu-> menuAction() -> setVisible (true); Najlepsze trafienie w Google twierdzi, że nie można tego zrobić, więc pomyślałem, że podzielę się tym tutaj. Nie trzeba usuwać podmenu i ponownie je dodawać, co może spowodować awarię osx. – Marcus10110