Looks like the SIGNAL loadFinished(bool) is not emitted anymore with Qt 6.8.1
-
@Volker75 said in Looks like the SIGNAL loadFinished(bool) is not emitted anymore with Qt 6.8.1:
#1 0x00007ffff77da635 in operator<<(QDebug, QWidget const*) () from /home/volker/Qt6.8/6.8.1/gcc_64/lib/libQt6Widgets.so.6
Still looks to me like it's trying to
qDebug()
aQWidget
--- presumably yourview
--- when something about it is invalid for that purpose during its destructor.Let's leave this now. I believe you have said you get a segmentation violation without introducing
qDebug()
s of objects during destruction. It would be nice to see a stack trace when that happens without any of this debug stuff introducing its own problems, which I believe is where you are now. -
hmm. Thank you so much. I sadly don't understand the last 2 sentences.
I am not as skilled as you. I still fear that one of the valgrind warnings is not false positive. But this is only a gut feeling from a rookie.
I will retry as soon as Qt 6.8.2 is released. I must sleep now. -
@JonB said in Looks like the SIGNAL loadFinished(bool) is not emitted anymore with Qt 6.8.1:
You might wait for @ChrisW67 to get back if he has anything to say, I don't know what effort this is worth for whatever it is trying to prove.
You are correct, it probably does not require Q_OBJECT. It's just habit for me to put it there and I was typing without the benefit of a Qt environment. I also missed the
connect()
referring to the wrong class as the target.It's just trying to make construct/destruct of the object overt and identify the objects (hence printing
this
). This is an aid to identifying if you have accidentally created a masking variable and to allow ensuring that everything is operating on the same object. This could also be done with debugger breakpoints and understanding. -
I was able to make a minimum example.
With Qt 6.7.2 it is working fine.
With Qt 6.8.1 is doesn't work.
Tested with Kubuntu 24.04.
http://www.scryer.de/MinBUG.zipCan maybe anyone have a look?
Thank you so much! -
Hi, I tested on Ubuntu 24.04.1 using Qt 6.8.1 in Release mode with gcc version 13.3.0 and your app is working fine for me.
However, nothing really happened, the QWebEngineEiew just sits there waiting for an initial url to start.
So i added one line to your timetableprintform.cpp:... viewPreview2 = new QWebEngineView(this); //notVisible. But must stay alive for printing. viewPreview2->setHtml(""); // <--- I added this line viewPreview2->hide(); ...
and then I got this qQebug output:
printPreviewLoadStarted
printPreviewLoadProgress
0
The cached device pixel ratio value was stale on window update. Please file a QTBUG which explains how to reproduce.
The cached device pixel ratio value was stale on window update. Please file a QTBUG which explains how to reproduce.
printPreviewLoadProgress
70
printPreviewLoadProgress
100
setView start
setView end
printPreview
printDocument
printFinished
The cached device pixel ratio value was stale on window update. Please file a QTBUG which explains how to reproduce.
The cached device pixel ratio value was stale on window update. Please file a QTBUG which explains how to reproduce.
The cached device pixel ratio value was stale on window update. Please file a QTBUG which explains how to reproduce.So it seems to be working fine, no crash.
P.S. Don't worry about those QTBUG message, they always appear for me since maybe 2023. -
It's a bit funny that it work in that line you added.
But i can't write it there, since in the real application is a big dialog where you can select of different settings and timetables.
So I can't call it from there.
I must call it from line 42 and there it is not working anymore. -
-
BTW: I don't get the "The cached device pixel ratio value was stale on window update. Please file a QTBUG which explains how to reproduce." information. Are you using Windows, Linux or MacOS?
I am currently trying Linux only and Linux doesn't work anymore :-( -
Ah... Sorry. Reading your mail once again.
Yes, then also the preview button is working. Strange. But the solution doesn't work, since there is a big white preview first and i can't hide it. And after printpreview at should also close, but it stays in the window. So that is not useable. It should work as with Qt 6.7.2. -
Hi, the reason the behavior differs between Qt 6.7.2 and Qt 6.8.1 is probably because you're creating the QWebEngineView with your QDialog derived TimetablePrintForm, i.e. not a QWdiget.
Easiest solution is just to omit any parent, like this:
,,, viewPreview2 = new QWebEngineView(); //notVisible. But must stay alive for printing. viewPreview2->hide(); ...
It was probably just good luck that allowed a QDialog flavoed parent to work anyway in 6.7.2 but in 6.8.1 you run out of it :-)
-
I fear I don't understand it 100%, but it is working now!
Thank you so much!
You have earned my announce reward. Please tell me your PayPal (email) or IBAN here or write me a private message and I will sent you the money..
Can you also tell if I need to care about deleting it now myself?
So do I need to write somewhere "delete viewPreview2" myself now or does the garbage collector already cares about it? -