QToolbar High-resolution (high dpi)



  • I am trying to optimize an application for high - resolution displays. In order to simulate this, I set the DPI setting on Windows 10 higher than normal, so that I have a devicePixelRatio of 2.

    I am loading high resolution SVG images, render them to a QPixmap, and set these as QIcons on the Toolbar. For that I need the iconSize information of the toolbar.

    However the toolbar reports its IconSize way too small, so that there are large borders around the image.

    I guess a picture says more than 1000 words: Left (sharp but borders) is done by rendering to proper size taking toolbar-iconSize info into account, on the right is just creating a QIcon directly from the SVG
    https://postimg.org/image/66me68gzx/

    For the left case (sharp, but borders around the icon) I am creating the Icons like this:

    ImageSize = toolbar.IconSize()
    const qreal PixelRatio = this->devicePixelRatio();
    QSvgRenderer svgRenderer(SvgFile);
    QPixmap img = new QPixmap(ImageSizePixelRatio);
    QPainter Painter;
    img->fill(Qt::transparent);
    Painter.begin(img);
    svgRenderer.render(&Painter);
    Painter.end();
    img->setDevicePixelRatio(PixelRatio);
    toolbar.addIcon(QIcon(img))

    for the right (blurry, but no borders) case I am just doing

    toolbar.addIcon(QIcon(svgFile)


Log in to reply
 

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