[Interest] QML Runtime Style Change

randomslap at tutanota.com randomslap at tutanota.com
Wed Jun 15 12:00:21 CEST 2022


  Thank you Mitch! But about the latter, I tried it out by basically 1. getting rid of styleChange, 2. writing the line of code you mentioned but calling doStyleChange and 3. making doStyleChange Q_INVOKABLE.

  At first the window opens, I also change the style once but on the second try it produces a segmentation fault (core dumped). Maybe I need to change more code. I also tried adding engine->exit(0); before deleting. The difference is that now it will produce the fault on the first try to change style.

    Perhaps I should consider not using this program's concept. It's pretty faulty and may not work on whole environment. Thanks for the advice, again.

Jun 15, 2022, 06:04 by mitch.curtis at qt.io:

>
> > >  > The program will not maintain the same position between window re-appearances.
>
>
>  
>
>
> If by position you mean window position, you can use Settings to store it:
>
>
>  
>
>
> https://doc.qt.io/qt-6/qml-qt-labs-settings-settings.html#details
>
>
>  
>
>
> > >  > I'd also like to ask, is there any way to get rid of the "special"  class function used only to invoke the other function? It really sounds like something that can be improved.
>
>
>  
>
>
> If you mean the invokable that does a queued invoke of doStyleChange, you could probably shift it to QML instead:
>
>
>  
>
>
>     onClicked: Qt.callLater(function() { App.styleChange(text); })
>
>
>  
>
>
> So you could merge doStyleChange into styleChange, but you still need the queued call.
>
>
>  
>
>
> From: > Interest <interest-bounces at qt-project.org> on behalf of randomslap--- via Interest <interest at qt-project.org>
>  > Date: > Wednesday, 15 June 2022 at 03:09
>  > To: > Interest <interest at qt-project.org>
>  > Subject: > [Interest] QML Runtime Style Change
>
> Hello again
>
>
>  
>
>
>     IMPORTANT: This mail is an UPDATE to the "Change QML Application Style on Runtime" mails.
>
>
>  
>
>
> I should also note I run on GNOME Wayland sessions.
>
>
>  
>
>
>     I finally managed to create a stupidly small application which is able to change to a whole different style only by renewing the QML engines. I send an image that shows all the code used as well as the app running and a compressed file containing all relevant files.
>
>
>  
>
>
> -> What was the problem:
>
>
>     Indeed there a was a need for a queued connection as it was suggested but that wasn't causing the warning at that time. It was rather the engine probably causing weird reactions. The solution was to simply change the engine to a pointer and delete and re-new every time I want to change the app's style. Also, the .close() function was causing a Wayland protocol fatal error but when I removed '()' it didn't complain. The engine.exit(0); might also not be necessary.
>
>
>  
>
>
> -> Important notes:
>
>
>     The program will not maintain the same position between window re-appearances. Items that are not bound by C++ data won't also maintain their states between re-appearances either.
>
>
>  
>
>
>     I just hope I can still reach a point to implement my idea even in a compositor and solve the above problems. I also hope memory is not leaking but I did not catch any related processes on my system monitor ( maybe I missed something ).
>
>
>  
>
>
>     I'd also like to ask, is there any way to get rid of the "special"  class function used only to invoke the other function? It really sounds like something that can be improved.
>
>
>  
>
>
> Thank you for helping me. I'd appreciate any ideas to improve this "concept" if possible.
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20220615/81c7161e/attachment.htm>


More information about the Interest mailing list