所以我的程序中有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);
}
答案 0 :(得分:1)
您应该将样式表设置为需要调整的确切按钮,而不是将样式应用于它的父窗体:
QString buttonName = QString("shelf%1").arg(input);
QPushButton* button = this->findChild<QPushButton*>(buttonName);
button->setStylesSheet(styleString)