以编程方式(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
无法理解如何使用 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