diff --git a/DuplicateScreenQML/DuplicateScreenQML.pro b/DuplicateScreenQML/DuplicateScreenQML.pro new file mode 100644 index 0000000..8a96387 --- /dev/null +++ b/DuplicateScreenQML/DuplicateScreenQML.pro @@ -0,0 +1,30 @@ +QT += quick + +CONFIG += c++11 + +# The following define makes your compiler emit warnings if you use +# any Qt feature that has been marked deprecated (the exact warnings +# depend on your compiler). Refer to the documentation for the +# deprecated API to know how to port your code away from it. +DEFINES += QT_DEPRECATED_WARNINGS + +# You can also make your code fail to compile if it uses deprecated APIs. +# In order to do so, uncomment the following line. +# You can also select to disable deprecated APIs only up to a certain version of Qt. +#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 + +SOURCES += \ + main.cpp + +RESOURCES += qml.qrc + +# Additional import path used to resolve QML modules in Qt Creator's code model +QML_IMPORT_PATH = + +# Additional import path used to resolve QML modules just for Qt Quick Designer +QML_DESIGNER_IMPORT_PATH = + +# Default rules for deployment. +qnx: target.path = /tmp/$${TARGET}/bin +else: unix:!android: target.path = /usr/sbin/novin/ +!isEmpty(target.path): INSTALLS += target diff --git a/DuplicateScreenQML/main.cpp b/DuplicateScreenQML/main.cpp new file mode 100644 index 0000000..6569361 --- /dev/null +++ b/DuplicateScreenQML/main.cpp @@ -0,0 +1,22 @@ +#include +#include +#include + +int main(int argc, char *argv[]) +{ + QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); + + QGuiApplication app(argc, argv); + + QQmlApplicationEngine engine; + + const QUrl url(QStringLiteral("qrc:/main.qml")); + QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, + &app, [url](QObject *obj, const QUrl &objUrl) { + if (!obj && url == objUrl) + QCoreApplication::exit(-1); + }, Qt::QueuedConnection); + engine.load(url); + + return app.exec(); +} diff --git a/DuplicateScreenQML/main.qml b/DuplicateScreenQML/main.qml new file mode 100644 index 0000000..9d59d6a --- /dev/null +++ b/DuplicateScreenQML/main.qml @@ -0,0 +1,76 @@ +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Window 2.12 + +Item{ + + Loader{ + id: source + sourceComponent: ApplicationWindow{ + id: appWindow + width: 800 + height: 800 + onFrameSwapped: { + windowContent.grabToImage(function(result) { + secondWindow.frame = String(result.url); + }); + } + + visible: true + screen: Qt.application.screens[0] + + Component.onCompleted: { + showFullScreen() + appWindow.frameSwapped() + } + + Item{ + id: windowContent + width: parent.width + height: parent.height + + Label{ + anchors.centerIn: parent + font.pointSize: 24 + text: "1" + } + + Item { + id: foo + width: 100; height: 100 + Rectangle { x: 5; y: 5; width: 60; height: 60; color: "red" } + Rectangle { x: 20; y: 20; width: 60; height: 60; color: "orange" } + Rectangle { x: 35; y: 35; width: 60; height: 60; color: "yellow" } + } + + Button{ + anchors.verticalCenterOffset: 24 + anchors.centerIn: parent + text: "Test Button" + onClicked: { + visible= false + } + } + } + + + Window{ + id: secondWindow + visible: true + screen: Qt.application.screens[1] + + property alias frame: frameImage.source + + Image { + id: frameImage + } + + Component.onCompleted: { + showFullScreen() + } + } + } + } + + +} diff --git a/DuplicateScreenQML/qml.qrc b/DuplicateScreenQML/qml.qrc new file mode 100644 index 0000000..5f6483a --- /dev/null +++ b/DuplicateScreenQML/qml.qrc @@ -0,0 +1,5 @@ + + + main.qml + +