В настоящее время я работаю над программой Qt C++ с более чем 152 QPushButtons. То, что я хотел бы сделать программе, это перекрасить определенный QPushButton, когда выполняется конкретное условие (у меня четыре цвета для четырех условий). У меня есть массивы, которые отслеживают каждое условие для каждого QPushButton, но до сих пор единственным, что мне удалось получить работу заключаются в следующем:Преобразование строк в имена виджетов QT 5.6
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] -> .... – Pemdas
У меня возникли проблемы с попыткой увидеть код для этого. Не могли бы вы подробнее объяснить свой ответ? – Abraxas
В качестве альтернативы, чтобы свести к минимуму ваши усилия: QString styleString = QString ("QPushButton # locker% 1 {background-color: rgb (75, 150, 255); border-color: rgb (50, 0, 128);}"). Arg (вход); этом-> setStyleSheet (styleString); – Devopia