Tayaki
@Tayaki
Пытаюсь в Python

Как разместить выпадающее меню в QToolBar?

Задача: разместить выпадающее меню.
Есть QMenuBar, и с ним понятно: объявляешь его, крепишь к нему QMenu, к тому — QAction и выпадающее меню готово.
Есть QToolBar, и с ним всё совсем не понятно. QAction крепить научилась, а меню — нет. Открывала документацию и старательно старалась разобраться — весь день ушёл на это. Безрезультатно.
Вот код:
toolBar = QToolBar() #Обявляем панель инструментов
self.addToolBar(toolBar) #Крепим её к окну

Button=QToolButton(self) #Объявляем кнопку, которая должна содержать выпадающее меню
Button.setIcon(QIcon(self.style().standardIcon(QStyle.SP_TitleBarMaxButton))) #даём ей иконку
        
settingsMenu=QMenu()#Создаём меню, которое будет выпадать
action1 = settingsMenu.addAction("Пункт1") #Добавляем пункт меню1
settingsMenu.addSeparator() #Сепаратор, чтобы было красивше :)
action2= settingsMenu.addAction("Пункт2")#Добавляем пункт меню2
action3= settingsMenu.addAction("Пункт3")#Добавляем пункт меню3

Button.setMenu(settingsMenu) #Цепляем к кнопке меню
Button.setPopupMode(QToolButton.MenuButtonPopup) #Устанавливаем мод для отобраения меню при нажатии кнопки
        
self.settingsButton = toolBar.addWidget(Button)#Добавляем получившийся виджет вToolBar


И всё бы хорошо, но по итогу у меня просто получается абсолютно красивая кнопка, которая совершенно ничего не показывает.
spoiler
5e98cea4327f3166192400.png

Мне кажется, что я целый день хожу вокруг да около, но всё никак не могу выудить ту пару строк, которая "сделает всё хорошо".
Помогите, пожалуйста: как правильно нужно объявлять выпадающее меню в QToolBar? :(
  • Вопрос задан
  • 609 просмотров
Решения вопроса 1
Tayaki
@Tayaki Автор вопроса
Пытаюсь в Python
В отчаянии уже просто чекала все подряд ссылки и каким-то совершенно невероятным образом перешла сюда.

В чём соль: нужно объявить родителя для меню, а именно кнопку.
В моём случае это так:
settingsMenu=QMenu(Button)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы