为自定义 QT 应用不同的 QSS 样式表 class
Apply different QSS stylesheet for custom QT class
我正在为我的图形用户界面使用 qss 样式sheet。它运行良好,但我想为我的自定义小部件定义不同的样式 sheet。
例如,QPushbutton
的样式效果很好,但我想为 MyQPushButton
应用不同的样式(从 QPushButton 扩展)。
我试过这样的事情:
MyQPushButton
{
color: #dcdcdc;
// some code here
}
QPushButton
{
color: #b1b1b1;
// some code here
}
但是QPushButton
的样式已经应用到MyQPushButton
。
如何覆盖此行为?
如果您想为项目中的特定元素设置样式,可以这样使用;
QPushButton#MyQPushButton
{
color: #dcdcdc;
// some code here
}
我假设,您已经将新的 QPushButton
对象命名为 MyQPushButton
,您可以这样命名一个元素;
QPushButton* myButton = new QPushButton;
myButton->setObjectName("MyQPushButton");
如果不命名您的元素,您将无法访问它以为其提供覆盖样式。
Ozan Yurtsever 的答案有效,但不是很好的做法。
你不应该为样式表使用对象名称,除非你想在你的应用程序中设计一个非常独特的小部件。容易出错,也比较冗长。
Qt 样式表默认已经允许你想要的,你可以覆盖子classes 的样式(见this part of the doc 的结尾)。
如文档中所述,样式表中声明的顺序很重要,因此您的样式表应为:
QPushButton
{
color: #b1b1b1;
// some code here
}
MyQPushButton
{
color: #dcdcdc;
// some code here
}
否则 QPushButton
的样式将覆盖 MyQPushButton
的样式,因为 MyQPushButton
也是 QPushButton
.
也可以将您的样式范围限制为仅 class,而不是 .QPushButton { /*some code*/ }
的子 class,请参阅 the doc about selectors。
最后一个提示,我遇到了样式表不适用于 subclass 的问题,请检查您是否没有忘记 subclass.[=19= 中的 Q_OBJECT
宏]
我正在为我的图形用户界面使用 qss 样式sheet。它运行良好,但我想为我的自定义小部件定义不同的样式 sheet。
例如,QPushbutton
的样式效果很好,但我想为 MyQPushButton
应用不同的样式(从 QPushButton 扩展)。
我试过这样的事情:
MyQPushButton
{
color: #dcdcdc;
// some code here
}
QPushButton
{
color: #b1b1b1;
// some code here
}
但是QPushButton
的样式已经应用到MyQPushButton
。
如何覆盖此行为?
如果您想为项目中的特定元素设置样式,可以这样使用;
QPushButton#MyQPushButton
{
color: #dcdcdc;
// some code here
}
我假设,您已经将新的 QPushButton
对象命名为 MyQPushButton
,您可以这样命名一个元素;
QPushButton* myButton = new QPushButton;
myButton->setObjectName("MyQPushButton");
如果不命名您的元素,您将无法访问它以为其提供覆盖样式。
Ozan Yurtsever 的答案有效,但不是很好的做法。
你不应该为样式表使用对象名称,除非你想在你的应用程序中设计一个非常独特的小部件。容易出错,也比较冗长。
Qt 样式表默认已经允许你想要的,你可以覆盖子classes 的样式(见this part of the doc 的结尾)。
如文档中所述,样式表中声明的顺序很重要,因此您的样式表应为:
QPushButton
{
color: #b1b1b1;
// some code here
}
MyQPushButton
{
color: #dcdcdc;
// some code here
}
否则 QPushButton
的样式将覆盖 MyQPushButton
的样式,因为 MyQPushButton
也是 QPushButton
.
也可以将您的样式范围限制为仅 class,而不是 .QPushButton { /*some code*/ }
的子 class,请参阅 the doc about selectors。
最后一个提示,我遇到了样式表不适用于 subclass 的问题,请检查您是否没有忘记 subclass.[=19= 中的 Q_OBJECT
宏]