From 269b48ed9d2c345ed32d8f8886c325bc577ad025 Mon Sep 17 00:00:00 2001 From: Anika Raemer Date: Wed, 17 Oct 2018 20:51:39 +0200 Subject: [PATCH] initial commit, basic project with basic components --- .gitignore | 1 + LenaPi/CircularListDelegate.qml | 29 +++ LenaPi/LenaPi.pro | 30 +++ LenaPi/LenaPi.pro.user | 336 +++++++++++++++++++++++++++++ LenaPi/MainForm.ui.qml | 29 +++ LenaPi/MyScrollView.qml | 32 +++ LenaPi/RectangularListDelegate.qml | 23 ++ LenaPi/main.cpp | 12 ++ LenaPi/main.qml | 50 +++++ LenaPi/qml.qrc | 9 + pics/benjamin.jpeg | Bin 0 -> 12414 bytes 11 files changed, 551 insertions(+) create mode 100644 .gitignore create mode 100644 LenaPi/CircularListDelegate.qml create mode 100644 LenaPi/LenaPi.pro create mode 100644 LenaPi/LenaPi.pro.user create mode 100644 LenaPi/MainForm.ui.qml create mode 100644 LenaPi/MyScrollView.qml create mode 100644 LenaPi/RectangularListDelegate.qml create mode 100644 LenaPi/main.cpp create mode 100644 LenaPi/main.qml create mode 100644 LenaPi/qml.qrc create mode 100644 pics/benjamin.jpeg diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5c77fa9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +build-LenaPi-Desktop-Debug diff --git a/LenaPi/CircularListDelegate.qml b/LenaPi/CircularListDelegate.qml new file mode 100644 index 0000000..1ce8541 --- /dev/null +++ b/LenaPi/CircularListDelegate.qml @@ -0,0 +1,29 @@ +import QtQuick 2.0 +import QtGraphicalEffects 1.0 + +Rectangle{ + id: circle + width: 100 + height: width + radius: width/2 + color: "blue" + Image{ + id: contentImage + source: "file:///home/ar/source/LenaPi/pics/benjamin.jpeg" + anchors.centerIn: parent + width: parent.width-10 + height: width + fillMode: Image.PreserveAspectCrop + layer.enabled: true + layer.effect: OpacityMask{ + maskSource: circle + } + } + MouseArea{ + id: controlObject + anchors.fill: parent + onClicked:{ + console.log("circle clicked") + } + } +} diff --git a/LenaPi/LenaPi.pro b/LenaPi/LenaPi.pro new file mode 100644 index 0000000..30a9c5d --- /dev/null +++ b/LenaPi/LenaPi.pro @@ -0,0 +1,30 @@ +TEMPLATE = app + +QT += qml quick +CONFIG += c++11 + +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 = + +# The following define makes your compiler emit warnings if you use +# any feature of Qt which as been marked deprecated (the exact warnings +# depend on your compiler). Please consult the documentation of the +# deprecated API in order to know how to port your code away from it. +DEFINES += QT_DEPRECATED_WARNINGS + +# You can also make your code fail to compile if you use 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 + +# Default rules for deployment. +qnx: target.path = /tmp/$${TARGET}/bin +else: unix:!android: target.path = /opt/$${TARGET}/bin +!isEmpty(target.path): INSTALLS += target diff --git a/LenaPi/LenaPi.pro.user b/LenaPi/LenaPi.pro.user new file mode 100644 index 0000000..c477d3c --- /dev/null +++ b/LenaPi/LenaPi.pro.user @@ -0,0 +1,336 @@ + + + + + + EnvironmentId + {76cb87c9-a04b-479b-87ff-1b3ddab073a7} + + + ProjectExplorer.Project.ActiveTarget + 0 + + + ProjectExplorer.Project.EditorSettings + + true + false + true + + Cpp + + CppGlobal + + + + QmlJS + + QmlJSGlobal + + + 2 + UTF-8 + false + 4 + false + 80 + true + true + 1 + true + false + 0 + true + true + 0 + 8 + true + 1 + true + true + true + false + + + + ProjectExplorer.Project.PluginSettings + + + + ProjectExplorer.Project.Target.0 + + Desktop + Desktop + {f9938f31-357c-4785-aa6e-21a3feac2ebf} + 0 + 0 + 0 + + /home/ar/source/LenaPi/build-LenaPi-Desktop-Debug + + + true + qmake + + QtProjectManager.QMakeBuildStep + true + + false + false + false + + + true + Make + + Qt4ProjectManager.MakeStep + + -w + -r + + false + + + + 2 + Build + + ProjectExplorer.BuildSteps.Build + + + + true + Make + + Qt4ProjectManager.MakeStep + + -w + -r + + true + clean + + + 1 + Clean + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Debug + + Qt4ProjectManager.Qt4BuildConfiguration + 2 + true + + + /home/ar/source/LenaPi/build-LenaPi-Desktop-Release + + + true + qmake + + QtProjectManager.QMakeBuildStep + false + + false + false + false + + + true + Make + + Qt4ProjectManager.MakeStep + + -w + -r + + false + + + + 2 + Build + + ProjectExplorer.BuildSteps.Build + + + + true + Make + + Qt4ProjectManager.MakeStep + + -w + -r + + true + clean + + + 1 + Clean + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Release + + Qt4ProjectManager.Qt4BuildConfiguration + 0 + true + + + /home/ar/source/LenaPi/build-LenaPi-Desktop-Profile + + + true + qmake + + QtProjectManager.QMakeBuildStep + true + + false + true + false + + + true + Make + + Qt4ProjectManager.MakeStep + + -w + -r + + false + + + + 2 + Build + + ProjectExplorer.BuildSteps.Build + + + + true + Make + + Qt4ProjectManager.MakeStep + + -w + -r + + true + clean + + + 1 + Clean + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Profile + + Qt4ProjectManager.Qt4BuildConfiguration + 0 + true + + 3 + + + 0 + Deploy + + ProjectExplorer.BuildSteps.Deploy + + 1 + Deploy locally + + ProjectExplorer.DefaultDeployConfiguration + + 1 + + + false + false + 1000 + + true + + false + false + false + false + true + 0.01 + 10 + true + 1 + 25 + + 1 + true + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + 2 + + LenaPi + + Qt4ProjectManager.Qt4RunConfiguration:/home/ar/source/LenaPi/LenaPi/LenaPi.pro + true + + LenaPi.pro + false + + + 3768 + false + true + false + false + true + + 1 + + + + ProjectExplorer.Project.TargetCount + 1 + + + ProjectExplorer.Project.Updater.FileVersion + 18 + + + Version + 18 + + diff --git a/LenaPi/MainForm.ui.qml b/LenaPi/MainForm.ui.qml new file mode 100644 index 0000000..f2cd99e --- /dev/null +++ b/LenaPi/MainForm.ui.qml @@ -0,0 +1,29 @@ +import QtQuick 2.7 + +Rectangle { + property alias mouseArea: mouseArea + property alias textEdit: textEdit + + width: 360 + height: 360 + + MouseArea { + id: mouseArea + anchors.fill: parent + } + + TextEdit { + id: textEdit + text: qsTr("Enter some text...") + verticalAlignment: Text.AlignVCenter + anchors.top: parent.top + anchors.horizontalCenter: parent.horizontalCenter + anchors.topMargin: 20 + Rectangle { + anchors.fill: parent + anchors.margins: -10 + color: "transparent" + border.width: 1 + } + } +} diff --git a/LenaPi/MyScrollView.qml b/LenaPi/MyScrollView.qml new file mode 100644 index 0000000..4d3e6e8 --- /dev/null +++ b/LenaPi/MyScrollView.qml @@ -0,0 +1,32 @@ +import QtQuick 2.0 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 + +ScrollView{ + style: ScrollViewStyle{ + transientScrollBars: true + handle: Item { + implicitWidth: 16 + implicitHeight: 8 + Rectangle { + color: "blue" + border.color: "black" + radius: height/2 + anchors.fill: parent + anchors.topMargin: 1 + anchors.leftMargin: 1 + anchors.rightMargin: 1 + anchors.bottomMargin: 1 + } + } + scrollBarBackground: Rectangle{ + color: "transparent" + border.color: "grey" + border.width: 1 + height: 8 + radius: height/2 + } + decrementControl: Item{} + incrementControl: Item{} + } +} diff --git a/LenaPi/RectangularListDelegate.qml b/LenaPi/RectangularListDelegate.qml new file mode 100644 index 0000000..4f2fb2e --- /dev/null +++ b/LenaPi/RectangularListDelegate.qml @@ -0,0 +1,23 @@ +import QtQuick 2.0 + +Rectangle{ + id: container + width: 100 + height: width + color: "blue" + Image{ + id: contentImage + source: "file:///home/ar/source/LenaPi/pics/benjamin.jpeg" + anchors.centerIn: parent + width: parent.width-10 + height: width + fillMode: Image.PreserveAspectCrop + } + MouseArea{ + id: controlObject + anchors.fill: parent + onClicked:{ + console.log("rectangle clicked") + } + } +} diff --git a/LenaPi/main.cpp b/LenaPi/main.cpp new file mode 100644 index 0000000..d76049d --- /dev/null +++ b/LenaPi/main.cpp @@ -0,0 +1,12 @@ +#include +#include + +int main(int argc, char *argv[]) +{ + QGuiApplication app(argc, argv); + + QQmlApplicationEngine engine; + engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); + + return app.exec(); +} diff --git a/LenaPi/main.qml b/LenaPi/main.qml new file mode 100644 index 0000000..d9d3e16 --- /dev/null +++ b/LenaPi/main.qml @@ -0,0 +1,50 @@ +import QtQuick 2.7 +import QtQuick.Window 2.2 +import QtQuick.Controls 1.4 + +Window { + visible: true + width: 800 + height: 480 + title: "LenaPi 1.0" + + MyScrollView{ + id: circleList + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + anchors.margins: 20 + + flickableItem.interactive: true + contentItem: + ListView{ + model: 20 + anchors.fill: parent + spacing: 10 + orientation: ListView.Horizontal + delegate: + CircularListDelegate{ + id: test + } + } + } + MyScrollView{ + anchors.left: parent.left + anchors.right: parent.right + anchors.top: circleList.bottom + anchors.margins: 20 + + flickableItem.interactive: true + contentItem: + ListView{ + model: 20 + anchors.fill: parent + spacing: 10 + orientation: ListView.Horizontal + delegate: + RectangularListDelegate{ + id: test + } + } + } +} diff --git a/LenaPi/qml.qrc b/LenaPi/qml.qrc new file mode 100644 index 0000000..9394177 --- /dev/null +++ b/LenaPi/qml.qrc @@ -0,0 +1,9 @@ + + + main.qml + MainForm.ui.qml + CircularListDelegate.qml + MyScrollView.qml + RectangularListDelegate.qml + + diff --git a/pics/benjamin.jpeg b/pics/benjamin.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..54eaf0a297ce7273b749130a9cda88c91b275079 GIT binary patch literal 12414 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 L^M9AXx3&KRMPK@N literal 0 HcmV?d00001