Вы можете попробовать создать новый массив colDef и передать его в параметры сетки.
Примерно так -
function updateColDef()
{
let newColDef= [];
this.gridColumns.forEach(function(colDef) {
colDef['menuTabs'] = ["generalMenuTab",columnsMenuTab"];
newColDef.push(colDef);
});
this.gridApi.api.setColumnDefs(newColDef);
this.gridApi.refreshHeader();
}
Аналогичная проблема , с которой столкнулся другой пользователь сетки ag
Путем я делаю, это следующее:
Я на самом деле изменяю цвет кнопки, для отражения пользовательского выбора. Чтобы сделать это, я использую спокойную таблицу стилей, которые гарантируют, что это портативно:
const QString COLOR_STYLE("QPushButton { background-color : %1; color : %2; }");
QColor ChosenColor; // Color chosen by the user with QColorDialog
QColor IdealTextColor = getIdealTextColor(ChosenColor);
btnChooseColor->setStyleSheet(COLOR_STYLE.arg(ChosenColor.name()).arg(IdealTextColor.name()));
Для проверки маркировка кнопки всегда читаема, я называю метод getIdealTextColor (), который является методом, который я нашел от codeproject статьи:
//==============================================================================
// Nom : getIdealTextColor
//! @return an ideal label color, based on the given background color.
//! Based on http://www.codeproject.com/cs/media/IdealTextColor.asp
//==============================================================================
QColor JSPreferencesDlg::getIdealTextColor(const QColor& rBackgroundColor) const
{
const int THRESHOLD = 105;
int BackgroundDelta = (rBackgroundColor.red() * 0.299) + (rBackgroundColor.green() * 0.587) + (rBackgroundColor.blue() * 0.114);
return QColor((255- BackgroundDelta < THRESHOLD) ? Qt::black : Qt::white);
}
Метод, который Вы используете, является громоздким, но что заставляет Вас думать, что это не портативно? Это должно работать где угодно, QT делает.
Помимо этого, я попытался бы сделать заполненную цветом кнопку так или иначе, подобной ответу Jérôme, только я, вероятно, сделаю специальную кнопку, чтобы сделать это, и путаница с палитрой так или иначе.