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

如何在QToolBar中自定义操作的外观?,qt,qt4,qtoolbar,Qt,Qt4,Qtoolbar,我刚刚将一些工具栏从Q3工具栏(明确添加了QToolButtons)更改为Q4工具栏(直接添加了操作) 旧的工具按钮周围有一个漂亮的轮廓,但在新版本中没有显示;Q4工具栏中的QActions看起来就像一行图标。有没有办法改变新版本中的“按钮”样式(假设这些动作可以被视为是这样的),并给出它们的大纲?我已经浏览了QToolBar引用,但是toolButtonStyle()函数似乎只适用于是否要显示图标、文本等 …还是我只需要制作实际的工具按钮和/或QPushButtons并使用addWidget(

我刚刚将一些工具栏从Q3工具栏(明确添加了QToolButtons)更改为Q4工具栏(直接添加了操作)

旧的工具按钮周围有一个漂亮的轮廓,但在新版本中没有显示;Q4工具栏中的QActions看起来就像一行图标。有没有办法改变新版本中的“按钮”样式(假设这些动作可以被视为是这样的),并给出它们的大纲?我已经浏览了QToolBar引用,但是toolButtonStyle()函数似乎只适用于是否要显示图标、文本等


…还是我只需要制作实际的工具按钮和/或QPushButtons并使用addWidget()

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

  • 您可以使用样式表设置它
  • 您可以使用新函数重新实现QToolButtons类,在该类中,您将能够准确地设置按钮的外观

  • 是的,当然可以通过两种不同的方式编辑QToolButtons的外观:

  • 您可以使用样式表设置它
  • 您可以使用新函数重新实现QToolButtons类,在该类中,您将能够准确地设置按钮的外观

  • 与给定操作关联的小部件可以通过访问(从Qt4.2开始)。因此,您可以将您的操作传递给此方法,获取它返回的
    QWidget
    s,将它们转换为
    QToolBar
    ,并像平常一样处理它们(代码未测试):

    /。。。
    自动工具按钮=
    静态浇铸(
    m_ui.toolbar->widgetForAction(m_ui.my_Action));
    //将使toolButton始终显示为凸起:
    toolButton->setAutoRaise(假);
    // ...
    

    就我所做的测试而言,有些方法可能不起作用(例如,
    QWidget::hide
    ),所以请自己进行测试。

    与给定操作相关联的小部件可以通过访问(从Qt 4.2开始)。因此,您可以将您的操作传递给此方法,获取它返回的
    QWidget
    s,将它们转换为
    QToolBar
    ,并像平常一样处理它们(代码未测试):

    /。。。
    自动工具按钮=
    静态浇铸(
    m_ui.toolbar->widgetForAction(m_ui.my_Action));
    //将使toolButton始终显示为凸起:
    toolButton->setAutoRaise(假);
    // ...
    

    就我所做的测试而言,有些方法可能不起作用(例如,
    QWidget::hide
    ),所以请自己进行测试。

    我查看了样式表文档,没有找到任何具体的方法来做大纲,除非我看得不够仔细。至于paintEvent…如果有必要,我会调查的。不过,希望有一个简单的解决方法:/I我浏览了样式表文档,没有找到任何具体的方法来做提纲,除非我看得不够仔细。至于paintEvent…如果有必要,我会调查的。不过,希望有一个简单的解决办法:/
    // ...
    
    auto toolButton =
        static_cast<QToolButton *>(
            m_ui.toolbar->widgetForAction(m_ui.my_Action));
    
    // Will make the toolButton always appear raised:
    toolButton->setAutoRaise(false);
    
    // ...