Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以在Qt Creator中将Qt样式表与升级的小部件一起使用?_Qt_Stylesheet_Qt Creator_Qtstylesheets - Fatal编程技术网

是否可以在Qt Creator中将Qt样式表与升级的小部件一起使用?

是否可以在Qt Creator中将Qt样式表与升级的小部件一起使用?,qt,stylesheet,qt-creator,qtstylesheets,Qt,Stylesheet,Qt Creator,Qtstylesheets,我正在尝试使用Qt样式表对标准小部件进行一些重大的重新设计。因此,在通过#objectName选择器为不同的小部件手动执行了大部分操作之后,我决定以某种方式对类似的小部件进行分组 例如,我有多个qframe,它们的行为类似于内部表单中的标题。我希望它们都有相同的样式表。一种方法是使用命名约定(这是我的回退变量),即QFrame[objectName |=“prefix”]。但我想按类对我的小部件进行分组。所以我创建了一个简单的占位符类: class HeaderFrame: public QFr

我正在尝试使用Qt样式表对标准小部件进行一些重大的重新设计。因此,在通过
#objectName
选择器为不同的小部件手动执行了大部分操作之后,我决定以某种方式对类似的小部件进行分组

例如,我有多个
qframe
,它们的行为类似于内部表单中的标题。我希望它们都有相同的样式表。一种方法是使用命名约定(这是我的回退变量),即
QFrame[objectName |=“prefix”]
。但我想按类对我的小部件进行分组。所以我创建了一个简单的占位符类:

class HeaderFrame: public QFrame
{
public:
    HeaderFrame(QWidget *parent = NULL): QFrame(parent) {}
};
这使我能够将所有这些
qframe
升级到
headerframe
。在那之后,我试着设置

HeaderFrame { background-color: red; }
样式表到MainWindow对象本身(使其作用于所有HeaderFrame),但它不起作用。QtCreator表单设计器中没有任何更改,编译应用程序后也没有任何更改。我尝试过这个样式表的不同变体,但没有任何效果


那么,是否只有Qt小部件(如QLabel、QFrame等)可以用这种方式进行样式设置?或者有什么方法可以为升级的小部件编写样式表?

是的,这是可能的。您应该记住的唯一一件事是,派生小部件的base应该支持样式表,并仔细地重新实现它们的PaintEvent

UPD: 例子 类别:

样式表:

Header1Label
{
    font-size:14px;
    font-weight:900;    
}

您可以始终将
类名
添加到对象的类属性中,即QStringList,并使用
.class name
选择器。

那么我应该怎么做呢?我根本没有重新实现paintEvent(),因此将使用QFrame::paintEvent(),它与样式表完美结合。我只想按照问题中所示的提升的小部件类名对样式表进行分组,就像内置小部件一样。通过它们的类名。@Raiv是的,关于忘记Q_对象宏,你是对的。遗憾的是,它无论如何都不会在QtCreator表单设计器中显示应用的样式表。所以我应该使用带有名称前缀选择器的回退变量。你可以在正在运行的程序中看到它们,qt creator本身不会显示。是的。这样,细粒度应用程序设计将更加困难。
Header1Label
{
    font-size:14px;
    font-weight:900;    
}