Unfortunately there isn't good way to provide additional properties even only for items. So I see 2 options:
1. Separate Item as Widget.
2. Create another control - table (or datagrid) widget, where every cell will separate widget.
Of course there is also simple and dirty way, to expand Item with at least member for text color and use inner value instead of common property and after that replace protected function for changing color by public one:
void ListView::setItemColor(std::size_t index, const Color& color, bool isForceUpdate)
{
for (auto& text : m_items[index].texts)
{
if (isForceUpdate)
m_items[index].m_textColor = color;
text.setColor(m_items[index].m_textColor);
}
}
@texus, how to do that better?