-
Bug
-
Resolution: Unresolved
-
P4: Low
-
None
-
5.4.2, 5.6.0
-
None
-
* Windows 8.1 x64 with Qt 5.6.0 using MSVC 2013 (64 bits);
* Mageia 5 x64 with Qt 5.4.2 using both gcc 4.9 and clange 3.5 (64 bits)
* Mageia 5 x64 with Qt 4.8.6 using gcc 4.9 (64 bits)
I'm trying to display a grayscale picture, on which areas of interest are shown with superimposed reticle-like objects and a small text using the QGraphic View Framework.
I had problem on some hardware with the OpenGL layer, therefore my goal is to let the CPU do the rendering. I added an option to disable antialiasing on displayed view, triggered by a right-click on the picture. The slot which toggles the antialiasing is implemented as:
void PictureDisplay::toggleSmoothing()
{
QPainter::RenderHints hints( renderHints() );
hints ^= QPainter::Antialiasing;
hints ^= QPainter::TextAntialiasing;
hints ^= QPainter::SmoothPixmapTransform;
hints ^= QPainter::HighQualityAntialiasing;
setRenderHints( hints );
QFont font( "Arial", 18 );
if ( ( hints & QPainter::HighQualityAntialiasing ) != 0 )
{
font.setStyleStrategy( QFont::PreferAntialias );
foreach ( QGraphicsSimpleTextItem* item, OverlaidTexts )
{
item->setFont( font );
}
PixmapItem->setTransformationMode( Qt::SmoothTransformation );
}
else
{
font.setStyleStrategy( QFont::NoAntialias );
foreach ( QGraphicsSimpleTextItem* item, OverlaidTexts )
{
item->setFont( font );
}
PixmapItem->setTransformationMode( Qt::FastTransformation );
}
}
I've tested this code with Qt 5.6.0 64bits on Windows 8.1 using MSVC 2013, Qt 5.4.2 64bits on Mageia 5 using both gcc 4.9 and clang 3.5, Qt 4.8.6 64bits on Mageia 5 using gcc 4.9.
Now, here's the catch:
- the Windows Qt 5.6 version does not disable text antialiasing, unless I use the OpenGL viewport;
- the Linux Qt 5.4 version does not disable text antialiasing (and I have no OpenGL output, i.e. blank widget, but never mind);
- the Linux Qt 4.8 does disable text antialiasing (and I have no OpenGL output, i.e. blank widget, but never mind).
In all cases, the displayed picture and the reticle-like shape respond correctly to the antialiasing toggling.