Managed to integrate my code with MJ's zone handling code, and got zones appearing on top of the test image. Created a sample popup menu to illustrate how linking would work, and then discovered that in order to take a screenshot of the app, I had to cause it to lose focus, which caused the popup menu to disappear. Ridiculous problem. Something in QT seems to be disabling the OS shortcut for screenshots.
So I had to build screenshotting into the app itself -- not too hard -- and trigger it with the onAboutToHide() event of the popup menu, so that it would trigger as I clicked on a menu item. This worked pretty well, and I have my screenshots now. Learned quite a bit in the process, though.
I need to rewrite MJ's code significantly, to hive off the controller component and to convert the idea of annotations to the more accurate concept of zones. Annotations are not part of the new structure, in the old sense; although it will be possible to create a div on the fly in the IMT when creating a zone, the more conventional path will be to link to an existing element through its xml:id; zones themselves may keep lists of pointers to the elements they're linked to, or those links may simply be handled externally by a link manager. I think I like the latter option best.