Мне кажется гораздо логичней было бы вставить в QObject или QWidget изначально просто указатель на который при надобности можно повесить структуру в памяти или в крайнем случае добавить QList с пропертями.
Такие рассуждения подходят для одноразовьІх решений, а так как обьектная система Qt претендует на универсальную, то в ней по понятньІм причинам нет ничего лишнего.
В данном случае тебе нужно прикрепить свои данньІе и первое, чтобьІ тьІ сделал на месте Троллей - прицепил бьІ пустой указатель - на всяк случай, вдруг хто захочет - юзайте.
Теперь посмотри на ситуацию, если бьІ вдруг так в Qt и бьІло. ТьІ пользуешься сторонними уже созданньІми обьектами и пьІтаешься привесить к ним свои данньІе через предоставляемьІй указатель. НО! Часть библиотеки, которой тьІ пользуешься уже прикрепила туда какие-то свои данньІе. Что делать? А как на счёт автоматического удаления, кто вьІзовет деструктор етих данньІх? Может добавить вместо указатея список указателей или некий хеш юзерских параметров, хранимьІх в QVariant? Но всё равно ето не решает проблему с автоматическим удалением и конфликтом параметров (по ключам), навешенньІх на один обьект от разньІх компонент. Навесить контейнер
QList<QVariant>? И как в нём найти именно свои данньІе?
Именно поетому система параметром создана универсально, без конфликтов - путём С++ наследования от обьектов. Поетому ничего лишнего (одноразового) в QObject нет.
Если хочешь прицепить свои данньІе - можешь воспользоваться собственньІм хешем с поиском по указателю на обьект:
QHash<QObject*,MyCustomProperties>
Процесс поиска можно ускорить механизмами Qt - отсеять ненужньІе обьектьІ с помощью
qobject_cast.