我如何自定义我在QToolBar行为的出现?(How can I customize the app

2019-09-29 11:01发布

我刚才已经改变了一些工具栏从Q3ToolBars(有明确添加到他们QToolButtons)到Q4工具栏(添加到他们马上代替行动。)

旧的工具按钮让他们围绕一个漂亮的轮廓,但这不是在新版本中显示; 在Q4工具栏中的QActions只是看起来像一条线的图标。 有没有办法来改变在新版本的“按钮”风格(假设这些行动可以被视为这样的),给他们的轮廓? 我已经通过了在QToolBar参考看了,但toolButtonStyle()函数只出现与是否要显示图标,文本等工作

...还是我将不得不只是让实际的工具按钮和/或QPushButtons和使用addWidget()?

Answer 1:

是的,当然你也可以编辑两种不同的方式QToolButtons的样子:

  1. 您可以通过设置它的风格sheet 无效的QWidget :: setStyleSheet(常量QString的和)
  2. 您可以重新实现新的QToolButtons类的paintEvent功能,您将能够精确地设置您的按钮应该的样子。


Answer 2:

与给定的动作有关的部件是通过访问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 ),所以做你自己的测试。



文章来源: How can I customize the appearance of the actions in my QToolBar?
标签: qt qt4 qtoolbar