如何在 Qt 中从 QToolBar 自定义 QToolButtons?

How to customize QToolButtons from QToolBar in Qt?

我有 QToolBar,上面有各种工具按钮。我想用一些简单的效果自定义这些按钮,比如应该看到按钮被按下,按下后应该改变它的图标颜色或背景颜色等。
我试过了,但我没能成功。

_toolbar = new QToolBar;
_toolbar->setIconSize(QSize(35,35));
_toolbar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);        
   
void createIcons()
{
    _zoomInIcon = QIcon::fromTheme("zoom-in");
    _zoomIn = new QAction(_zoomInIcon, "Zoom in", this);      
   // code for other icons    
   
   _toolbar->addAction(_zoomIn);
}
      
    
void myClass::ZoomIn()
{
    _zoomIn->setCheckable(true);
    //QToolButton:_zoomInIcon {background-color: red; }
    //setStyleSheet('background-color: red;');
   // other logic  
}
  

此外,我正在使用来自此 default-icons
的 Qt 默认图标 但是有些图标特别不好看 save insave in as.
那么有没有人知道 Qt 中除了以上 link 之外的更多默认图标?

谁能帮帮我?

试试下面的方法(未测试)

//Get the tool button using the action
QToolButton* zoomInButton = mytoolbar->widgetForAction(_zoomIn);

//Set the style you want.
zoomInButton->setStyleSheet("QToolButton:pressed"
                             "{"
                             "background-color : red;"
                             "}"
                             );

如果您的工具按钮没有菜单,您可以使用所有 QPushButton 样式。

https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qtoolbutton

The QToolButton has no menu. In this case, the QToolButton is styled exactly like QPushButton.