QGLWidget Viewport Ugly Text



  • When using a QGLWidget as a viewport for a QGraphicsView causes fonts to be insanely ugly. I am using a QGraphicsSimpleTextItem. Is there a way to make rendered text look as nice as it does when using the default viewport?

    Secondly, to work around this I am trying to render the background png-image and text off-screen into a pixmap, then adding the pixmap to the scene that is displayed on the screen. The problem is I cannot make the background transparent. Here is essentially what I am doing:

    • create a QGraphicsItemGroup
    • Add a QPixmap (which is a png image containing transparent parts)
    • Add a QGraphicsSimpleText item on top of the QPixmap
    • Add the QGraphicsItemGroup to a new QGraphicsScene
    • Create a QPixmap and a QPainter
    • Call QGraphicsScene::render into the QPainter.
    • Add the QPainter's QPixmap to the output scene that is displayed on the screen.

    The rendered text looks good again however no matter what I try, the QGraphicsScene always fills in the transparent parts of the background png with a background color. Even when I set the background color of the scene to have a 0 alpha value, I still get a background color. I also tried adding another step and putting the scene into a viewport and using setAutoFillBackground to false which did not help either. Is there something I am missing here or maybe a better way to do this? I cannot have rendered text looking like we are back in the 80's.

    Thanks!

    Travis

    [EDIT: list formatting, Volker]



  • If you are using a QPainter to paint.. Could you turn on Anti-Aliasing.. see QPainter::RenderHint. Also, if you're scaling the text or image, then that could cause it to look ugly, if you scale a QImage, pass the Qt::TransformationMode argument and set it as Qt::SmoothTransformation. I'm not sure if this would help, but maybe you get some hint as to why its happening.



  • From what I have read, it is a known problem that fonts in Qt look absolutely ridiculously ugly when drawn using a QGlWidget. If I paint them in the background using a QPainter then simply use the QPixmap I generate as the text instead of a QGraphicsSimpleTextItem directly it looks as it should, however I cannot make the QPainter/QGraphicsScene draw a transparent background color into the generated QPixmap. Therefore you get a grey background filling the QPixmap behind the text. Is there a way to have it draw the background transparent? I have tried everything I could find in the API docs that seemed like it should affect the background.

    Travis



  • Hi Travis,

    I will try it out and let you know if I could get it working. The transparency in my opinion shouldn't be an issue and usually isn't (atleast with the QPainter, we do a lot of transparency in our app with QPainter with no issue). Anyways, I'll try it and get back to you.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.