Feat: basic Qt6 + QML support #1098
Closed
+1,803
−188
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Changes for Qt6 + QML adaptation.
Note: tested only on Ubuntu 22.04, with Qt 6.5.3
Qt 6 porting
I did not have time to test that with other platforms. I also didn't check all possible functionalities, as I was mainly focused on adapting for personal project, in which I only needed plain screen casting + input.
I can confirm scrcpy works, dialog is also displayed and is fully responsive. I am not sure if audio works.
simplescreenrecorder-2025-01-06_20.51.43.mp4
Qml porting
As stated previously, I focused mainly on displaying direct scrcpy output in QML. That being said, I did not adapt every possible function and method, as simply I didn't need them. However below changes are good starting point for future developers, to fully implement QtScrcpy in QML.
Ported OpenGL widget to single QQuickItem allowing to display scrcpy output.
Dialog config parameters are moved to new ScrcpyManager QtQuick singleton. Adapted all parameters to Q_PROPERTY so they can be modified before starting stream - some of them may not be needed anymore.
For now manager accepts only one ScrcpyItem connection at once, but this shouldn't be hard to extend in the future.
Below video of minimal QML application using adapted QtScrcpy (source is attached in this PR too):
simplescreenrecorder-2025-01-06_20.59.21.mp4
Note: currently fork of QtScrcpyCore is used, because some adjustments to support Qt6 were needed here.
I also suggest merging this PR to separate branch, since it's still WIP, and requires more testing and probably adjustments.