如何阻止Qt的setStyleSheet重置表单和按钮上的指定颜色?

时间:2016-04-21 23:06:01

标签: c++ css qt stylesheet

所以我的程序中有152个QPushButtons。每个按钮代表一个项目,每个项目都有一个颜色指定其状态。当被要求输入用户输入时,下面的代码为右键添加颜色,但是,当代码为特定小部件着色时,它也基本上重置了我在表单上的所有其他样式。此重置包括以前由我的代码着色的按钮。我该如何阻止它?

以下是简化代码:

QString input = QString(ui -> lineEdit -> text());
ui->lineEdit->clear();
int number = input.toInt();

if(status[number] == 1)
{
QString styleString = QString("#shelf"+input+"{background-color: rgb(0, 150, 255);}"); 
this->setStyleSheet(styleString);
}
else if(status[number] == 2)
{
QString styleString = QString("#shelf"+input+"{background-color: rgb(255, 0, 0);}"); 
this->setStyleSheet(styleString);
}
else if(status[number] == 3)
{
QString styleString = QString("#shelf"+input+"{background-color: rgb(0, 255, 0);}"); 
this->setStyleSheet(styleString);
}

1 个答案:

答案 0 :(得分:1)

您应该将样式表设置为需要调整的确切按钮,而不是将样式应用于它的父窗体:

QString buttonName = QString("shelf%1").arg(input);
QPushButton* button = this->findChild<QPushButton*>(buttonName);
button->setStylesSheet(styleString)