所以我的程序中有 152 个 QPushButton。每个按钮代表一个元素,每个元素都有一种颜色来指示其状态。下面的代码在要求用户输入时为右侧按钮着色,但是,当代码为特定小部件着色时,它基本上还重置了我表单上的所有其他样式。此重置包括以前由我的代码着色的按钮。我该如何阻止它?
这是简化的代码:
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);
}
最佳答案
您应该将样式表设置为需要调整的确切按钮,而不是将样式应用于其父表单:
QString buttonName = QString("shelf%1").arg(input);
QPushButton* button = this->findChild<QPushButton*>(buttonName);
button->setStylesSheet(styleString)
关于c++ - 如何阻止 Qt 的 setStyleSheet 重置我的表单和按钮上的指定颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36781943/