Как я могу настроить внешний вид действий в моем QToolBar?
Я только что изменил некоторые панели инструментов из Q3ToolBars (с явным добавлением к ним QToolButtons) в панели инструментов Q4 (с действиями, добавленными к ним прямо сейчас).
У старых кнопок инструментов были красивые контуры вокруг них, но это не отображается в новой версии; QActions на панели инструментов Q4 выглядят как линия иконок. Есть ли способ изменить стиль кнопки в новой версии (при условии, что эти действия можно считать таковыми) и дать им схему? Я просмотрел ссылку на QToolBar, но функция toolButtonStyle(), кажется, работает только с тем, хотите ли вы отображать значок, текст и т. Д.
... Или мне просто нужно сделать реальные кнопки инструментов и / или QPushButtons и использовать addWidget()?
2 ответа
Да, конечно, вы можете редактировать внешний вид QToolButtons двумя различными способами:
- Вы можете установить таблицу стилей используя void QWidget::setStyleSheet(const QString &)
- Вы можете переопределить класс QToolButtons с новой функцией paintEvent, где вы сможете точно установить, как должна выглядеть ваша кнопка.
Виджет, связанный с данным действием, доступен через QToolBar::widgetForAction
(начиная с Qt 4.2). Таким образом, вы можете передать свои действия этому методу, получить QWidget
s возвращается, преобразовать их в QToolBar
и обрабатывать их как обычно (код не проверен):
// ...
auto toolButton =
static_cast<QToolButton *>(
m_ui.toolbar->widgetForAction(m_ui.my_Action));
// Will make the toolButton always appear raised:
toolButton->setAutoRaise(false);
// ...
Насколько я тестировал, некоторые методы могут не работать (например, QWidget::hide
), так что сделайте свое собственное тестирование.