Qt 将样式从外部样式表应用到以编程方式添加的小部件
Qt apply style from external stylesheet to a programmatically added widget
我正在向我的应用程序(在 main.cpp 中)加载外部样式sheet,如下所示:
QApplication a(argc, argv);
QFile File(":/resources/stylesheet.qss");
File.open(QIODevice::ReadOnly);
QString style( File.readAll() );
a.setStyleSheet(style);
在那种风格中 sheet 我尝试将我在 mainwindow.cpp 中创建的小部件作为目标,该小部件被添加到在同一文件中创建的布局,并且该布局设置为使用创建的小部件设计师。
QListWidget *songList = new QListWidget;
QVBoxLayout *vBoxLayout = new QVBoxLayout;
vBoxLayout->addWidget(songList);
ui->midWidgetCenter->setLayout(vBoxLayout);
stylesheet.qss
QListWidget#songList {
background: red;
}
省略小部件名称应用样式。
是否可以将外部样式 sheet 的样式应用到以编程方式创建的元素?
当您使用 SomeWidget#SomeName 命令时,qt 使用 objectName
来应用样式。如果您使用 Qt Designer,请将此 属性 设置为属性的名称。但是如果我们创建小部件,我们必须建立 属性,在您的情况下,解决方案是:
QListWidget *songList = new QListWidget;
songList->setObjectName("songList");
我正在向我的应用程序(在 main.cpp 中)加载外部样式sheet,如下所示:
QApplication a(argc, argv);
QFile File(":/resources/stylesheet.qss");
File.open(QIODevice::ReadOnly);
QString style( File.readAll() );
a.setStyleSheet(style);
在那种风格中 sheet 我尝试将我在 mainwindow.cpp 中创建的小部件作为目标,该小部件被添加到在同一文件中创建的布局,并且该布局设置为使用创建的小部件设计师。
QListWidget *songList = new QListWidget;
QVBoxLayout *vBoxLayout = new QVBoxLayout;
vBoxLayout->addWidget(songList);
ui->midWidgetCenter->setLayout(vBoxLayout);
stylesheet.qss
QListWidget#songList {
background: red;
}
省略小部件名称应用样式。
是否可以将外部样式 sheet 的样式应用到以编程方式创建的元素?
当您使用 SomeWidget#SomeName 命令时,qt 使用 objectName
来应用样式。如果您使用 Qt Designer,请将此 属性 设置为属性的名称。但是如果我们创建小部件,我们必须建立 属性,在您的情况下,解决方案是:
QListWidget *songList = new QListWidget;
songList->setObjectName("songList");