I finally gave up on heightForWidth and am now trying to accomplish this with QResizeEvent. If I re-implement it for the widget, it only controls the resizing of the contents of the sub-window, not the sub-window's frame. When I do it for the sub-window (i.e., in a class inheriting QMdiSubWindow), it has no effect! Someone, please throw me a line; I'm running out of ideas....
[EDIT -- After more testing, I realized that I've got a pointer problem: QMdiArea expects type QMdiSubWindow, so I used an unsafe cast to get it to accept my new class. That means I have a base-class pointer directed at an instance of a derived class, which I think explains why my resize code isn't executing. But I'm not sure how I can get around this. Do I have to re-impement QMdiArea as well?]