I've added more methods for finding and checking the existence of links in link groups and sets, and for changing the link type of a link (by moving it from one group to another). I've made other minor tweaks to code and documentation.
However, I'm beginning to question one core decision in the ImtLinkGrpSet class. I don't think that the linkGrps member should be a QSet; I think it should be a QHash. The key should be the linkType value, giving me easy access to the linkGrp and its links through the type string, and ensuring its uniqueness, which is essential. This would require substantial refactoring, but I think it's worth it.
It's also worth thinking about making the links member of the linkGrp class a QHash as well, using a concatenation of the target zone id and target text id as the key. This would have similar advantages; it would then be very easy to get a pointer to a link with its core information. I think this will be my next task.