Qt样式表 - 相同类型小部件的不同样式

时间:2014-02-23 12:08:50

标签: qt qtstylesheets

我需要为相同类型的窗口小部件实例分配不同的样式。特别适合QActions。以下样式表设置QActions的背景图像,实际工具按钮'。

QToolButton
{
    background-image: url(bg.png);
}

但是我需要为这样的工具按钮指定不同的背景。

QToolButton::actClose
{
    background-image: url(close.png);
}
QToolButton::actOpen
{
    background-image: url(open.png);
}

有这样简单的方法还是不可能?

2 个答案:

答案 0 :(得分:1)

如果您可以发布创建QToolButton并与QActions相关联的c ++代码,这会有所帮助。

引用QToolBar的参考“通过使用addAction()或insertAction()添加动作添加工具栏按钮。”和“QWidget * QToolBar widgetForAction(QAction * action)const 返回与指定操作关联的窗口小部件。“

因此,如果您正在创建QToolBar并调用QToolBar :: addAction(QAction *)来填充它,则可以获得指向工具按钮的指针。尝试QToolBar :: widgetForAction(),并调用setObjectName(“”)并应用Blueman的方法。

将样式表应用于窗口小部件时,在类名后面使用“#”来指定对象名称,在objectName的className之后使用“:”表示对象的状态,如“enabled”,“::”用于指定像“ListView :: Item”这样的子控制,遗憾的是QAction既不是QToolBar。

答案 1 :(得分:0)

您可以为QToolButton

的实例设置对象名称
QToolButton *button = new QToolButton;
button->setObjectName("firstButton");

button = new QToolButton;
button->setObjectName("secondButton");

然后在样式表中使用它们

QToolButton#firstButton 
{ 
   background-color: gray 
}

QToolButton#secondButton 
{ 
   background-color: red 
}