如何在QToolBar中自定义操作的外观?

时间:2012-09-05 14:30:19

标签: qt qt4 qtoolbar

我刚刚将Q3ToolBars中的一些工具栏(明确添加了QToolButtons)更改为Q4工具栏(相反,会立即添加操作。)

旧的工具按钮周围有一个漂亮的轮廓,但新版本中没有显示; Q4工具栏中的QActions看起来像一行图标。有没有办法在新版本中更改“按钮”样式(假设这些操作可以这样考虑)并给它们提供大纲?我查看了QToolBar参考,但toolButtonStyle()函数似乎只适用于是否要显示图标,文本等。

...或者我是否必须制作实际的工具按钮和/或QPushButtons并使用addWidget()?

2 个答案:

答案 0 :(得分:0)

是的,当然你可以用两种不同的方式编辑QToolButtons的外观:

  1. 您可以使用void QWidget::setStyleSheet(const QString &)
  2. 设置样式表
  3. 您可以使用新的paintEvent功能重新实现QToolButtons类,您可以在其中准确设置按钮的外观。

答案 1 :(得分:0)

可以通过QToolBar::widgetForAction访问与给定操作相关联的窗口小部件(自Qt 4.2起)。因此,您可以将操作传递给此方法,获取它返回的QWidget,将它们转换为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),所以你自己的测试也是如此。