The only issue is that of performance - and as the top level widget has one anyway, this shouldn't be a problem.  I just thought I'd mention it in case it hadn't been considered.  (eg, I've seen the use of winId() cause framerates in client applications to drop from 60 fps to 12 fps, after a call to winId() to get an id to use in a call to XSetTransientFor()).