Qt样式表为所有QProgressBars编程(c++)

Qt stylesheet for all QProgressBars programmatically (C++)

本文关键字:编程 c++ QProgressBars 样式 Qt      更新时间:2023-10-16

难以理解如何以编程方式设置样式表应用于几个(甚至所有)小部件在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样式表为我的小部件创建一个样式表,并避免所有这些代码复制。

阅读文档后,语法将是这样的:

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

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

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

最后,如果为所有进度条创建这样的样式表,我如何将一个进度条(或任何与此相关的小部件)从样式表中排除,而使用另一个样式表呢?

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