用于qt应用程序的多个样式表

时间:2015-04-09 21:45:30

标签: qt stylesheet

是否可以为单个qt应用程序提供多个样式表,并根据需要选择其中任何样式表?

例如,我想在我的应用程序中使用不同类型的按钮。我明白通常你会有类似的东西:

QPushButton { background-color: green; }

然后所有按钮都将按照上面一行的绿色样式。但是,我想让我的样式表看起来像这样:

QPushButton1 { background-color: blue; }
QPushButton2 { background-color: green; }

我可能需要在我的应用程序中放置几个​​按钮,对于每个按钮,我想选择QPushButton1样式或QPushButton2样式。

这在一个或多个样式表中是否可行,以便我可以使用setStyleSheet()来启用我的自定义样式?

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以使用全局样式表并为每个特殊对象名称设置特殊设置。

#QPushButton1 { background-color: blue; }
#QPushButton2 { background-color: green; }

但在这种情况下,您还需要在代码中设置这些对象名称。可以通过以下方式完成:

ui->pushbutton1->setObjectName("QPushButton1");
ui->pushbutton2->setObjectName("QPushButton2");

也可以将相同的对象名称设置为不同的小部件。

关于更改objectName。当您更改objectName时,Qt将不会自动重新应用styleSheet(这样做是为了获得更好的效果),因此您应该手动执行此操作。您可以使用objectNameChanged信号并在相应的广告位中重新应用styleSheet,或者只是:

ui->pushButton_2->setObjectName("QPushButton1");
qApp->setStyleSheet(qApp->styleSheet());//re-apply