QWidget paintEvent slow when rendering
-
@mrjj That is actually a default gui with nothing more than this sidebar promoted to a widget and a
QTableWidget
.
I don't know what is happening, as I said, if I remove the code to draw the text it doesn't blink.Precisely this part of the code:
QString title = "Welcome"; QSize size = painter.fontMetrics().size( Qt::TextSingleLine, title );
If I comment that part of the code this is how it runs:
-
@Dohisev
mmh, have you tried calling the base paintEvent first?void Sidebar::paintEvent(QPaintEvent *event) { QWidget::paintEvent(event); QPainter painter(this); ... }
-
Yes call fontMetrics outside the paint and calc size there to see if that works faster.
make sur eto use same font both places :)QFont font("times", 24); QFontMetrics fm(font); int pixelsWide = fm.width("What's the width of this text?");
Normally its not that slow. so u might have a broken ttf file or something.
-
Yes call fontMetrics outside the paint and calc size there to see if that works faster.
make sur eto use same font both places :)QFont font("times", 24); QFontMetrics fm(font); int pixelsWide = fm.width("What's the width of this text?");
Normally its not that slow. so u might have a broken ttf file or something.
@mrjj I tried this but it doesn't work. I'm even drawing icons on the sidebar and it's not freezing, but when I uncomment the draw text it does freeze.
edit: It's not the font metrics, it's the
drawText
itself, I put only:painter.drawText(itemRect, Qt::AlignCenter, "welcome");
and it's freezing. -
@mrjj I tried this but it doesn't work. I'm even drawing icons on the sidebar and it's not freezing, but when I uncomment the draw text it does freeze.
edit: It's not the font metrics, it's the
drawText
itself, I put only:painter.drawText(itemRect, Qt::AlignCenter, "welcome");
and it's freezing. -
@Dohisev
I have not seen that before. Do you set a special font or something?
Does any of the many samples do anything like that?
Did you install extra fonts to windows?@mrjj Yes, it doesn't happen with all examples on Qt using
QPainter
but probably does happen when using to draw a text. Yes, I have installed fonts on Windows but how does that changes anything? No, I'm not using a font to draw, I'm just calling to draw a text and that is it. -
@mrjj Yes, it doesn't happen with all examples on Qt using
QPainter
but probably does happen when using to draw a text. Yes, I have installed fonts on Windows but how does that changes anything? No, I'm not using a font to draw, I'm just calling to draw a text and that is it.@Dohisev
Qt will enumerate all fonts. So if some of the ttf files are bad, it can hang a bit in that.
On a desktop class system, normally its shown instantly so
the reason that drawText is slow must be found somewhere else.How high resolution are you running?
-
What you mean with the resolution? You mean my screen resolution? It's 1366x768.
Is there a workaround to check if it's a problem with the enumeration Qt does with the fonts?
-
Yeah your first paint for mainwindow seems much slower.
But i dont get it if none of the other samples do anything like that as they are have same structure etc.
Can you try my test project?
https://www.dropbox.com/s/nl0issoplwylkb7/slowtext.zip?dl=0Just to verify that it runs slower at your pc. Then it must be local somehow.,
-
Yeah your first paint for mainwindow seems much slower.
But i dont get it if none of the other samples do anything like that as they are have same structure etc.
Can you try my test project?
https://www.dropbox.com/s/nl0issoplwylkb7/slowtext.zip?dl=0Just to verify that it runs slower at your pc. Then it must be local somehow.,
-
@mrjj It seems to be a local problem, I don't know if this will be happening if I compile here and distribute the generated binary. What should I do?
@Dohisev
First i would update video drivers. just to be on the safe side.
Im pretty sure it wont happen when you distribute your app but
it would be nice to know what it comes from.If you remove the drawText , the speed is normal ?
-
@Dohisev
First i would update video drivers. just to be on the safe side.
Im pretty sure it wont happen when you distribute your app but
it would be nice to know what it comes from.If you remove the drawText , the speed is normal ?
-
@mrjj I did remove all the fonts I installed but it's still the same, so I'm going to be updating the drivers and hope that everything is back to normal after that, if not, I think it might be something with my computer. It might be needing a clean up or something like that.
Thank you mrjj, you helped a lot, thank you for your patience. -
@mrjj I did remove all the fonts I installed but it's still the same, so I'm going to be updating the drivers and hope that everything is back to normal after that, if not, I think it might be something with my computer. It might be needing a clean up or something like that.
Thank you mrjj, you helped a lot, thank you for your patience.