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

时间:2016-10-08 12:06:42

标签: c++ css qt qstylesheet

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

例如,假设我有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中使用的参数名称直接复制到上面的语法中。

我也试过这样的事情

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; }");

以上都不起作用(未声明的标识符和语法错误)。

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

最后,如果为所有进度条创建了这样的样式表,那么如何排除一个进度条(或任何小部件)与使用该样式表而不是另一个?< / p>

1 个答案:

答案 0 :(得分:2)

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