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

时间:2017-08-23 18:43:48

标签: c++ qt qt5 qtstylesheets

我将外部样式表加载到我的应用程序(在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);

stylesheet.qss

QListWidget#songList {
    background: red;
}

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

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

1 个答案:

答案 0 :(得分:3)

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

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