以编程方式(C++)为所有 QProgressBars 的 Qt 样式表

Qt stylesheet for all QProgressBars programmatically (C++)

无法理解如何使用 C++ 在 Qt Creator 4.1 (Qt 5.7) 中以编程方式设置样式表以应用于多个(甚至所有)小部件。

例如,假设我有 3 个进度条小部件;我已经使用 css 明确设置了相同的样式表,如下所示:

ui->c1->setStyleSheet("QProgressBar {"
                          "background-color: #74c8ff;"
                          "color: #0a9dff;"
                          "border-style: outset;"
                          "border-width: 2px;"
                          "border-color: #74c8ff;"
                          "border-radius: 7px;"
                          "text-align: left; }"

                          "QProgressBar::chunk {"
                          "background-color: #010327; }");

ui->c2->setStyleSheet("QProgressBar {"
                          "background-color: #74c8ff;"
                          "color: #0a9dff;"
                          "border-style: outset;"
                          "border-width: 2px;"
                          "border-color: #74c8ff;"
                          "border-radius: 7px;"
                          "text-align: left; }"

                          "QProgressBar::chunk {"
                          "background-color: #010327; }");

ui->c3->setStyleSheet("QProgressBar {"
                          "background-color: #74c8ff;"
                          "color: #0a9dff;"
                          "border-style: outset;"
                          "border-width: 2px;"
                          "border-color: #74c8ff;"
                          "border-radius: 7px;"
                          "text-align: left; }"

                          "QProgressBar::chunk {"
                          "background-color: #010327; }");

我想使用 Qt Stylesheets 为我的小部件创建样式表并避免所有这些代码请求。

阅读文档后,语法如下:

QProgressBar
{
    background: #74c8ff;
    color: #0a9dff;
    border-style: outset;
    border-width: 2px;
    border-color: #74c8ff;
    border-radius: 7px;
    text-align: left;
}
QProgressBar::chunk
{
    background-color: #010327;
}

但是,显然您不能将 setStylesheet 和 css 中使用的参数名称直接复制到上述语法中。

我也试过类似的方法

QProgressBar.setStyleSheet("QProgressBar {"
                           "background-color: #74c8ff;"
                           "color: #0a9dff;"
                           "border-style: outset;"
                           "border-width: 2px;"
                           "border-color: #74c8ff;"
                           "border-radius: 7px;"
                           "text-align: left; }"

                           "QProgressBar::chunk {"
                           "background-color: #010327; }");
以上的

None 有效(未声明的标识符和语法错误)。

有人可以提供一个示例,说明如何使用上述参数定义单个样式表以应用于所有小部件吗?如果您能指出一个资源(我找不到任何东西!)来解释实现我的目标的可用参数,那就太好了。

最后,如果为所有进度条创建了这样一个样式表,我怎样才能排除一个进度条(或任何与此相关的小部件)具有该样式表并取而代之不同的?

使用 qApp->setStyleSheet 而不是 QProgressBar.setStyleSheet 为应用程序中的所有小部件设置样式表。这里有更多示例:http://doc.qt.io/qt-5/stylesheet-examples.html