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

标签 c++ css qt stylesheet

所以我的程序中有 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/

相关文章:

c++ - 链接 CEF3 的问题

c# - 有人可以破译 timeGetTime() 或 QueryPerformanceCounter/QueryPerformanceFrequency 是否具有较低的开销或/和准确性?

javascript - 在 safari 中调整滚动标题的大小效果很好,但在 chrome 和 firefox 上会变得不稳定

c++ - SonarQube 社区版的 SonarCFamily 插件

c++ - KDevelop 中是否存在任何类型的 "Codelet Template"?

html - 将包含未定义大小的图像的 div 放在另一个 div 的底部

javascript - 创建分布均匀且具有流动行为的仪表板

c++ - Qt/C++ : Having an MDI child call a function of its parent?

macos - 为 macOS 上的 Qt 提供深色模式图标

c++ - 我如何编辑QCombobox的当前文本?