Qt 将样式从外部样式表应用到以编程方式添加的小部件

Posted

技术标签:

【中文标题】Qt 将样式从外部样式表应用到以编程方式添加的小部件【英文标题】:Qt apply style from external stylesheet to a programmatically added widget 【发布时间】:2017-08-23 18:43:47 【问题描述】:

我正在向我的应用程序(在 main.cpp 中)加载一个外部样式表,如下所示:

QApplication a(argc, argv);
QFile File(":/resources/stylesheet.qss");
File.open(QIODevice::ReadOnly);
QString style( File.readAll() );
a.setStyleSheet(style);

在该样式表中,我尝试定位在 mainwindow.cpp 中创建的小部件,该小部件被添加到在同一文件中创建的布局中,并且布局设置为使用设计器创建的小部件。

QListWidget *songList = new QListWidget;
QVBoxLayout *vBoxLayout = new QVBoxLayout;

vBoxLayout->addWidget(songList);
ui->midWidgetCenter->setLayout(vBoxLayout);

样式表.qss

QListWidget#songList 
    background: red;

省略小部件名称会应用样式。

是否可以将外部样式表中的样式应用于以编程方式创建的元素?

【问题讨论】:

【参考方案1】:

当你使用 SomeWidget#SomeName 命令时,qt 使用objectName 来应用样式。如果您使用 Qt Designer,请将此属性设置为属性的名称。但是,如果我们创建小部件,我们必须建立该属性,在您的情况下,解决方案是:

QListWidget *songList = new QListWidget;
songList->setObjectName("songList");

【讨论】:

以上是关于Qt 将样式从外部样式表应用到以编程方式添加的小部件的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式确定 Qt 样式表选项?

如何以编程方式将 UITableView 样式从普通转换为组 [重复]

如何使用样式表设置 qwidget 的背景颜色?

带有外部样式表的div?

如何为 PyQT4 项目使用外部样式表?

在 Asp.Net 中以编程方式添加样式表