【问题标题】:QT: setStyleSheet from a resource QSS file?QT:来自资源 QSS 文件的 setStyleSheet?
【发布时间】:2012-06-15 20:52:47
【问题描述】:

在我的小部件中,我可以这样做:

MyWindow::MyWindow(QWidget *parent) :
    QWidget(parent)
{
    ui.setupUi(this);
    setStyleSheet("QWidget { background-color: red }");  // <--- HERE
}

这会将小部件背景设置为红色。

我的资源中有一个 QSS 文件。如何指示我的小部件从那里获取其样式表内容,而不是仅将 qss 语法作为参数?

【问题讨论】:

    标签: qt


    【解决方案1】:

    作为为每个小部件设置样式表的替代方法,您可以为整个应用程序加载和设置样式表。像这样的:

    QApplication app( argc, argv );
    
    // Load an application style
    QFile styleFile( ":/style.qss" );
    styleFile.open( QFile::ReadOnly );
    
    // Apply the loaded stylesheet
    QString style( styleFile.readAll() );
    app.setStyleSheet( style );
    

    在这种情况下,所有小部件都会自动从给定的样式表中选择它们的样式。

    【讨论】:

      【解决方案2】:

      知道了:您实际上必须从资源中“读取文件”,将其转换为 QString 并将其提供给 setStyleSheet。例如:

      QFile file(":/qss/default.qss");
      file.open(QFile::ReadOnly);
      QString styleSheet = QLatin1String(file.readAll());
      setStyleSheet(styleSheet);
      

      【讨论】:

      • 但不要忘记调用 ensurePolished() 否则可能不会应用新的样式表。
      • ensurePolished 是干什么用的?
      • @ffttyy 这可确保新样式实际应用于小部件。我曾遇到过没有以其他方式应用新样式的情况。
      猜你喜欢
      • 1970-01-01
      • 2012-06-17
      • 1970-01-01
      • 2014-10-24
      • 2021-07-16
      • 2023-03-11
      • 2012-06-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多