1

无法理解如何以编程方式设置样式表以应用于使用 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 样式表为我的小部件创建样式表并避免所有这些代码重复。

阅读文档后,语法如下:

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

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

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

最后,如果为所有进度条创建了这样的样式表,我如何才能从拥有该样式表中排除一个进度条(或任何小部件)而使用不同的样式表?

4

1 回答 1

3

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

于 2016-10-08T12:18:52.860 回答