나는이 코드를 가지고 지금까지, 내 QMainWindow
모든 QDockWidget
을 열거하고/보여 QDockWidgets
을 숨길 수있는 동적 메뉴를 만드는 싶습니다동적으로 생성 된 QAction을 사용하여 QSignalMapper를 사용하는 방법은 무엇입니까?
class PluginActionsViewDocks():
def __init__(self, main_window):
self.main_window = main_window
mapper = QSignalMapper(self.main_window)
self.actions = []
for dock in main_window.findChildren(QtWidgets.QDockWidget):
action = create_action(
main_window, dock.windowTitle(),
slot=mapper.map,
tooltip='Show {0} dock'.format(dock.windowTitle())
)
mapper.setMapping(action, dock)
self.actions.append(action)
mapper.mapped.connect(self.toggle_dock_widget)
help_menu = main_window.menuBar().addMenu('&View')
setattr(help_menu, "no_toolbar_policy", True)
add_actions(help_menu, tuple(self.actions))
def toggle_dock_widget(self, dock_widget):
print("toggle_dock_widget")
메뉴는 모든 QDockWidget windowTitles으로 채워 되나 나는 그들 각각을 누를 때 toggle_dock_widget
슬롯이 호출되지 않는다. create_action
은 QAction을 생성하고 트리거 된 신호를 slot
에 연결하는 도우미입니다.
문제는 QSignalMapper가 어떻게 작동하는지 잘 모르지만 내 직감은이 특정 문제에 대해 올바른 선택이라고 말해줍니다.
여기에 무엇이 누락 될 수 있습니까?
예, 감사합니다. 내 질문을 한 후에 나는 내장 된 것을 발견했다. 그럼에도 불구하고 나는 다음에 아는 사람이 qsignalmapper를 올바르게 사용하는 방법을 더 잘 알 수 있도록 내 발췌 문장에 무엇이 잘못되었는지 알아내는 것에 관심이 많습니다. 어떤 생각? +1 – BPL
@ BPL. 내 업데이트 답변을 참조하십시오. – ekhumoro
고맙습니다. 그게 다야! – BPL