【发布时间】:2016-04-20 22:28:30
【问题描述】:
我目前正在开发一个包含超过 152 个 QPushButtons 的 Qt C++ 程序。我希望程序做的是在满足特定条件时为特定的 QPushButton 重新着色(我有四种颜色用于四个条件)。我有跟踪每个 QPushButton 的每个条件的数组,但到目前为止,我设法开始工作的唯一事情是:
ui->locker100->setStyleSheet("background-color: rgb(75, 150, 255); border-color: rgb(50, 0, 128);");
其中 locker100 是一个特定的 QPushButton。我想做的是将一个 QString 与一个数组连接起来,从而产生 QPushButton 的名称。它看起来像这样:
bool key[152];
std::fill(key, key + 152, true);
Qstring widgetName = "locker";
int input = 100;
if (key[input] == true)
{
ui->widgetName + input->setStyleSheet("background-color: rgb(75, 150, 255); border-color: rgb(50, 0, 128);");
}
但是连接会产生错误。任何反馈和具体代码将不胜感激。谢谢!
【问题讨论】:
-
使用名称作为键将假发放入地图中。然后你可以做这样的事情。 mymap [widgername]->....
-
我在查看代码时遇到了麻烦。您介意更详细地解释您的答案吗?
-
或者,为了尽量减少你的工作量: QString styleString = QString("QPushButton#locker%1{background-color: rgb(75, 150, 255); border-color: rgb(50, 0, 128);}").arg(输入); this->setStyleSheet(styleString);
-
@Devopia 这真的很接近我想要实现的目标,而且非常容易实现!到目前为止,我唯一的疑虑是它似乎重置了我在表单上的所有其他样式。除此之外,这个概念就像一个魅力。而不是使用 int 虽然我只是将两个字符串加在一起。这是代码:QString input = "1"; QString styleString = QString("#locker"+input+"{背景颜色: rgb(0, 150, 255); 边框颜色: rgb(50, 0, 128);}"); this->setStyleSheet(styleString); 思考我在做什么来导致所有样式重置?
-
我不希望代码做任何事情 "#locker" +input 是一个不完整的限定符。我不确定样式表是如何解释的。
标签: c++ qt dynamic-programming