(Qt) две строки виджетов на панели инструментов
Я не могу понять, как создать панель инструментов с двумя рядами виджетов. Я работаю над проектом Python3/Qt4.
Моя догадка:
добавить виджет в виджет панели инструментов
добавить вертикальный макет (или QGridLayout, это не имеет значения) для виджета
добавить кнопки панели инструментов в макет
Но все, что я получаю, это крошечная и пустая панель инструментов: мне нужно как-то "растянуть" виджет?
Мой код Python3, пытаясь вставить вертикально две кнопки на панели инструментов:
self.main_toolbar = self.addToolBar('MyToolBar')
self.toolbar_widget = QtGui.QWidget(self.main_toolbar)
self.toolbar_layout = QtGui.QVBoxLayout()
self.toolbar_widget.setLayout(self.toolbar_layout)
button1 = QtGui.QPushButton(self)
button1.setText("button1")
self.toolbar_layout.addWidget( button1 )
button2 = QtGui.QPushButton(self)
button2.setText("button2")
self.toolbar_layout.addWidget( button2 )
2 ответа
Код, который вы разместили, в порядке, просто вы забыли добавить свой виджет на панель инструментов.
Вы можете сделать это используя QToolBar.addWidget:
self.main_toolbar.addWidget(self.toolbar_widget)
Все просто: вам действительно нужны две панели инструментов, одна под другой.
Вы не можете просто добавить дочерние виджеты на панель инструментов. Ваш main_toolbar
предположительно из QToolBar
учебный класс. Вы не можете просто добавить toolbar_widget
к этому!
Ни вы не можете изменить расположение QToolBar
, Панель инструментов сама управляет макетом своих дочерних элементов, вы не должны связываться с ней - она не разработана таким образом.
Единственный способ добавления виджетов на панель инструментов - через addWidget
метод панели инструментов, а не макета!
Ваш код неверен. Что вы можете сделать, и все, что вы можете сделать с помощью панели инструментов:
self.main_toolbar = self.addToolBar('MyToolBar')
button1 = QtGui.QPushButton(self)
button1.setText("button1")
self.main_toolbar.addWidget( button1 )
button2 = QtGui.QPushButton(self)
button2.setText("button2")
self.main_toolbar.addWidget( button2 )
То, что вы хотите сделать, просто не поддерживается панелью инструментов. Панель инструментов может, возможно, расположить свои элементы в более чем одном ряду, если они не все подходят. Это, наверное, зависит от стиля. Вы можете свободно вставлять "высокие" виджеты панели инструментов, которые имеют внутреннюю компоновку и две вложенные кнопки внутри, но это будет выглядеть очень некрасиво.