I ended up keeping the texture approach.

I create a single QImage texture large enough to fit max string lenght, then draw/clear for all text I'm displaying. With smoothing turned on, it's not overly slow, and gives a fairly decent visual.