├── .github └── workflows │ └── release.yaml ├── .gitignore ├── CMakeLists.txt ├── LICENSE.code ├── LICENSE.md ├── LICENSE.text ├── README.md ├── assets ├── frontpage.jpg └── frontpage.pdf ├── docs ├── .vuepress │ ├── config.js │ └── styles │ │ └── index.styl ├── CMakeLists.txt ├── ch01-meetqt │ ├── assets │ │ ├── background.png │ │ ├── ch01_diragrams.graffle │ │ ├── ch01_overview.png │ │ ├── essential_modules.png │ │ ├── pinwheel.png │ │ ├── pole.png │ │ ├── qt-modules.png │ │ ├── qt6_overview.png │ │ ├── scene.png │ │ ├── scene2.png │ │ ├── showcase.png │ │ ├── showcase2.png │ │ ├── showcase3.png │ │ └── showcase4.png │ ├── blocks.md │ ├── intro.md │ ├── meet-qt.md │ └── src │ │ └── Showcase │ │ ├── Showcase.qml │ │ ├── Step01Root.qml │ │ ├── Step02Background.qml │ │ ├── Step03Pinwheel.qml │ │ ├── Step04Animate.qml │ │ ├── images │ │ ├── background.png │ │ ├── blur.png │ │ ├── pinwheel.png │ │ └── pole.png │ │ ├── pinwheel.qml │ │ ├── showcase.qmlproject │ │ ├── showcase.qmlproject.qtds │ │ ├── something.png │ │ └── tst_showcase.qml ├── ch02-start │ ├── app-types.md │ ├── assets │ │ ├── example.png │ │ └── qtcreator-run.png │ ├── hello-world.md │ ├── install.md │ ├── quick-start.md │ └── summary.md ├── ch03-qtcreator │ ├── assets │ │ ├── creator-edit-shortcuts.png │ │ ├── creator-editor.png │ │ ├── creator-locator.png │ │ ├── creator-welcome.png │ │ ├── locator.png │ │ └── qtcreator-screenshots.png │ ├── debugging.md │ ├── editor.md │ ├── kit-registry.md │ ├── locator.md │ ├── projects.md │ ├── qt-creator.md │ ├── shortcuts.md │ └── user-interface.md ├── ch04-qmlstart │ ├── advanced.md │ ├── assets │ │ ├── anchorgrid.png │ │ ├── anchors.png │ │ ├── button_clicked.png │ │ ├── button_waiting.png │ │ ├── chapter04.graffle │ │ ├── column.png │ │ ├── flow.png │ │ ├── grid.png │ │ ├── image.png │ │ ├── keys.png │ │ ├── mousearea1.png │ │ ├── mousearea2.png │ │ ├── objects.png │ │ ├── objects_overlap.png │ │ ├── objects_transformed.png │ │ ├── qmltree.png │ │ ├── rectangle2.png │ │ ├── rectangle3.png │ │ ├── repeater.png │ │ ├── row.png │ │ ├── scene.pdf │ │ ├── scene.png │ │ ├── text.png │ │ ├── textedit.png │ │ ├── textinput.png │ │ └── textinput3.png │ ├── components.md │ ├── core-elements.md │ ├── input.md │ ├── layout.md │ ├── positioning.md │ ├── qml-syntax.md │ ├── quick-start.md │ ├── src │ │ ├── components │ │ │ ├── Button.qml │ │ │ ├── ButtonMinimalApiExample.qml │ │ │ ├── InlinedComponentExample.qml │ │ │ ├── ReusableComponentExample.qml │ │ │ └── components.qmlproject │ │ ├── concepts │ │ │ ├── ImageExample.qml │ │ │ ├── MouseAreaExample.qml │ │ │ ├── PropertiesExample.qml │ │ │ ├── RectangleExample.qml │ │ │ ├── RectangleExample2.qml │ │ │ ├── RectangleExample3.qml │ │ │ ├── ScriptingExample.qml │ │ │ ├── TextExample.qml │ │ │ ├── assets │ │ │ │ ├── background.png │ │ │ │ ├── triangle_blue.png │ │ │ │ ├── triangle_blue@2x.png │ │ │ │ ├── triangle_green.png │ │ │ │ ├── triangle_green@2x.png │ │ │ │ ├── triangle_red.png │ │ │ │ └── triangle_red@2x.png │ │ │ ├── concepts.qmlproject │ │ │ ├── tst_concepts.qml │ │ │ ├── tst_imageexample.qml │ │ │ └── tst_rectangleexample.qml │ │ ├── input │ │ │ ├── DarkSquare.qml │ │ │ ├── GreenSquare.qml │ │ │ ├── KeysExample.qml │ │ │ ├── TLineEdit.qml │ │ │ ├── TLineEditV1.qml │ │ │ ├── TLineEditV2.qml │ │ │ ├── TTextEdit.qml │ │ │ ├── TextEditExample.qml │ │ │ ├── TextInputExample.qml │ │ │ ├── TextInputExample2.qml │ │ │ ├── TextInputExample3.qml │ │ │ ├── TextInputExample4.qml │ │ │ └── input.qmlproject │ │ ├── layout │ │ │ ├── AnchorsExample.qml │ │ │ ├── AnchorsExample2.qml │ │ │ ├── BlueSquare.qml │ │ │ ├── BrightSquare.qml │ │ │ ├── DarkSquare.qml │ │ │ ├── EmptySquare.qml │ │ │ ├── GreenSquare.qml │ │ │ ├── RedSquare.qml │ │ │ ├── Square.qml │ │ │ ├── anchors.qmlproject │ │ │ └── tst_anchors.qml │ │ ├── positioners │ │ │ ├── BlueSquare.qml │ │ │ ├── BrightSquare.qml │ │ │ ├── ColumnExample.qml │ │ │ ├── DarkSquare.qml │ │ │ ├── FlowExample.qml │ │ │ ├── GreenSquare.qml │ │ │ ├── GridExample.qml │ │ │ ├── GridsystemExample.qml │ │ │ ├── MixedExample.qml │ │ │ ├── PositionersExample.qml │ │ │ ├── RawRowExample.qml │ │ │ ├── RedSquare.qml │ │ │ ├── RepeaterExample.qml │ │ │ ├── RowExample.qml │ │ │ ├── RowExample2.qml │ │ │ ├── assets │ │ │ │ ├── beach_s01.jpg │ │ │ │ ├── beach_s02.jpg │ │ │ │ ├── beach_s03.jpg │ │ │ │ └── beach_s04.jpg │ │ │ └── positioners.qmlproject │ │ └── transformation │ │ │ ├── ClickableImage.qml │ │ │ ├── TransformationExample.qml │ │ │ ├── assets │ │ │ ├── background.png │ │ │ ├── background@2x.png │ │ │ ├── box_green.png │ │ │ ├── box_green@2x.png │ │ │ ├── box_green@3x.png │ │ │ ├── circle_blue.png │ │ │ ├── circle_blue@2x.png │ │ │ ├── triangle_red.png │ │ │ └── triangle_red@2x.png │ │ │ ├── transformation.qmlproject │ │ │ └── tst_transformation.qml │ └── transformations.md ├── ch05-fluid │ ├── advanced.md │ ├── animations.md │ ├── assets │ │ ├── animation.png │ │ ├── animation_loop.gif │ │ ├── animation_sequence.png │ │ ├── animationtypes.png │ │ ├── animationtypes_start.png │ │ ├── automatic │ │ │ └── easingcurves.png │ │ ├── chapter05.graffle │ │ ├── easingtypes.png │ │ ├── groupedanimation.png │ │ ├── parallelanimation_sequence.png │ │ ├── sequentialanimation_sequence.png │ │ ├── soccer_init.png │ │ ├── soccer_plan.png │ │ ├── soccer_stage1.png │ │ ├── soccer_stage2.png │ │ ├── soccer_stage3.png │ │ ├── soccer_stage4.png │ │ ├── trafficlight_sketch.png │ │ ├── trafficlight_states.png │ │ ├── trafficlight_transition.png │ │ └── trafficlight_ui.png │ ├── fluid-elements.md │ ├── src │ │ ├── animation │ │ │ ├── AnimationExample.qml │ │ │ ├── AnimationTypesExample.qml │ │ │ ├── BouncingBallExample.qml │ │ │ ├── BrightSquare.qml │ │ │ ├── ClickableImageV2.qml │ │ │ ├── ClickableImageV3.qml │ │ │ ├── DarkSquare.qml │ │ │ ├── GreenSquare.qml │ │ │ ├── ParallelAnimationExample.qml │ │ │ ├── RedSquare.qml │ │ │ ├── SequentialAnimationExample.qml │ │ │ ├── StatesExample.qml │ │ │ ├── animation.qmlproject │ │ │ ├── assets │ │ │ │ ├── background.png │ │ │ │ ├── background@2x.png │ │ │ │ ├── background_medium.png │ │ │ │ ├── background_medium@2x.png │ │ │ │ ├── box_blue.png │ │ │ │ ├── box_blue@2x.png │ │ │ │ ├── box_green.png │ │ │ │ ├── box_green@2x.png │ │ │ │ ├── box_red.png │ │ │ │ ├── box_red@2x.png │ │ │ │ ├── planet.png │ │ │ │ ├── rocket.png │ │ │ │ ├── rocket2.png │ │ │ │ ├── soccer_ball.png │ │ │ │ ├── soccer_shadow.png │ │ │ │ ├── ufo.png │ │ │ │ └── ufo_background.png │ │ │ └── tst_animationtypes.qml │ │ ├── easing │ │ │ ├── Box.qml │ │ │ ├── EasingCurves.qml │ │ │ ├── EasingCurves.qmlproject │ │ │ ├── EasingType.qml │ │ │ ├── Tracer.qml │ │ │ └── blueprint.jpg │ │ └── screenshots.qml │ └── states-transitions.md ├── ch06-controls │ ├── assets │ │ ├── android-selector.png │ │ ├── applicationwindow-areas.png │ │ ├── button-background-checked-enlarged.9.png │ │ ├── button-background-enlarged.9.png │ │ ├── dialog-state-machine.png │ │ ├── interface-document-window.png │ │ ├── interface-side-by-side-community.png │ │ ├── interface-side-by-side-current.png │ │ ├── interface-side-by-side-user.png │ │ ├── interface-stack-about.png │ │ ├── interface-stack-edit-profile.png │ │ ├── interface-stack-home.png │ │ ├── interface-stack-profile.png │ │ ├── nested-screens.png │ │ ├── side-by-side-screen.png │ │ ├── style-basic.png │ │ ├── style-fusion.png │ │ ├── style-imagine-example.png │ │ ├── style-imagine.png │ │ ├── style-material.png │ │ ├── style-universal.png │ │ ├── viewer-about.png │ │ ├── viewer-mobile-drawer.png │ │ ├── viewer-mobile.png │ │ └── viewer-window.png │ ├── common-patterns.md │ ├── controls2.md │ ├── image-viewer.md │ ├── imagine-style.md │ ├── introduction.md │ ├── src │ │ ├── imageviewer-all │ │ │ ├── +android │ │ │ │ ├── main.qml │ │ │ │ └── qtquickcontrols2.conf │ │ │ ├── ImageViewerWindow.qml │ │ │ ├── images │ │ │ │ └── baseline-menu-24px.svg │ │ │ ├── imageviewer-all.pro │ │ │ ├── main.cpp │ │ │ ├── main.qml │ │ │ ├── qml.qrc │ │ │ └── qtquickcontrols2.conf │ │ ├── imageviewer-desktop │ │ │ ├── imageviewer-desktop.pro │ │ │ ├── main.cpp │ │ │ ├── main.qml │ │ │ └── qml.qrc │ │ ├── imageviewer-mobile │ │ │ ├── images │ │ │ │ └── baseline-menu-24px.svg │ │ │ ├── imageviewer-mobile.pro │ │ │ ├── main.cpp │ │ │ ├── main.qml │ │ │ └── qml.qrc │ │ ├── imageviewer-native │ │ │ ├── imageviewer-native.pro │ │ │ ├── main.cpp │ │ │ ├── main.qml │ │ │ └── qml.qrc │ │ ├── imagine-style │ │ │ ├── buttons.svg │ │ │ ├── images │ │ │ │ └── imagine │ │ │ │ │ ├── applicationwindow-background.png │ │ │ │ │ ├── button-background-checked.9.png │ │ │ │ │ ├── button-background-pressed.9.png │ │ │ │ │ └── button-background.9.png │ │ │ ├── imagine-style.pro │ │ │ ├── main.cpp │ │ │ ├── main.qml │ │ │ ├── qml.qrc │ │ │ └── qtquickcontrols2.conf │ │ ├── interface-document-window │ │ │ ├── DocumentWindow.qml │ │ │ ├── interface-document-window.pro │ │ │ ├── main.cpp │ │ │ ├── main.qml │ │ │ └── qml.qrc │ │ ├── interface-side-by-side │ │ │ ├── Current.qml │ │ │ ├── TotalStats.qml │ │ │ ├── UserStats.qml │ │ │ ├── interface-side-by-side.pro │ │ │ ├── main.cpp │ │ │ ├── main.qml │ │ │ ├── qml.qrc │ │ │ └── qtquickcontrols2.conf │ │ └── interface-stack │ │ │ ├── About.qml │ │ │ ├── EditProfile.qml │ │ │ ├── Home.qml │ │ │ ├── Profile.qml │ │ │ ├── interface-stack.pro │ │ │ ├── main.cpp │ │ │ ├── main.qml │ │ │ ├── qml.qrc │ │ │ └── qtquickcontrols2.conf │ └── summary.md ├── ch07-modelview │ ├── advanced.md │ ├── assets │ │ ├── automatic │ │ │ ├── delegates-basic.png │ │ │ ├── delegates-expanding-large.png │ │ │ ├── delegates-expanding-small.png │ │ │ ├── delegates-objectmodel.png │ │ │ ├── empty.dir │ │ │ ├── gridview-basic.png │ │ │ ├── listview-basic.png │ │ │ ├── listview-clip.png │ │ │ ├── listview-header-footer.png │ │ │ ├── listview-highlight.png │ │ │ ├── listview-horizontal.png │ │ │ ├── listview-sections.png │ │ │ ├── pathview-coverview.png │ │ │ ├── repeater-array.png │ │ │ ├── repeater-delegate.png │ │ │ ├── repeater-model.png │ │ │ ├── repeater-number.png │ │ │ └── xmllistmodel-images.png │ │ ├── model-view-delegate.png │ │ └── tableview.png │ ├── basic-models.md │ ├── concept.md │ ├── delegate.md │ ├── dynamic-views.md │ ├── model-view.md │ ├── src │ │ ├── CMakeLists.txt │ │ ├── ch06.qmlproject │ │ ├── common │ │ │ ├── Background.qml │ │ │ ├── BlueBox.qml │ │ │ ├── Box.qml │ │ │ ├── GreenBox.qml │ │ │ ├── RedBox.qml │ │ │ ├── Tracer.qml │ │ │ └── YellowBox.qml │ │ ├── delegates │ │ │ ├── add-remove-effects.qml │ │ │ ├── basic.qml │ │ │ ├── cache-buffer.qml │ │ │ ├── expanding.qml │ │ │ ├── images │ │ │ │ ├── earth.jpeg │ │ │ │ ├── jupiter.jpeg │ │ │ │ ├── mars.jpeg │ │ │ │ ├── mercury.jpeg │ │ │ │ └── venus.jpeg │ │ │ ├── model-action.qml │ │ │ ├── objectmodel.qml │ │ │ ├── ss-basic.qml │ │ │ └── ss-expanding-large.qml │ │ ├── gridview │ │ │ └── basic.qml │ │ ├── listview │ │ │ ├── basic.qml │ │ │ ├── clip.qml │ │ │ ├── header-footer.qml │ │ │ ├── highlight-custom.qml │ │ │ ├── highlight.qml │ │ │ ├── horizontal.qml │ │ │ ├── sections.qml │ │ │ └── ss-highlight.qml │ │ ├── pathview │ │ │ └── coverview.qml │ │ ├── repeater │ │ │ ├── array.qml │ │ │ ├── delegate.qml │ │ │ ├── model.qml │ │ │ └── number.qml │ │ ├── screenshots.qml │ │ ├── tableview │ │ │ ├── CMakeLists.txt │ │ │ ├── main.cpp │ │ │ ├── main.qml │ │ │ ├── qml.qrc │ │ │ ├── tablemodel.cpp │ │ │ └── tablemodel.h │ │ └── xmllistmodel │ │ │ ├── images.qml │ │ │ └── ss-images.qml │ └── summary.md ├── ch08-canvas │ ├── assets │ │ ├── canvas_image.png │ │ ├── canvaspaint.png │ │ ├── composite-operations.png │ │ ├── convenient.png │ │ ├── glowlines.png │ │ ├── gradient.png │ │ ├── html_glowlines.png │ │ ├── line.png │ │ ├── rectangle.png │ │ ├── shadow.png │ │ ├── spirograph.png │ │ └── transform.png │ ├── canvas-element.md │ ├── canvas-paint.md │ ├── composition-modes.md │ ├── convenience-api.md │ ├── gradients.md │ ├── images.md │ ├── pixel-buffer.md │ ├── port-from-html.md │ ├── shadows.md │ ├── src │ │ └── canvas │ │ │ ├── ColorSquare.qml │ │ │ ├── assets │ │ │ └── ball.png │ │ │ ├── canvas.qmlproject │ │ │ ├── compositeoperation.qml │ │ │ ├── composition.qml │ │ │ ├── convenient.qml │ │ │ ├── glowlines.qml │ │ │ ├── gradient.qml │ │ │ ├── image.qml │ │ │ ├── imagedata.qml │ │ │ ├── line.qml │ │ │ ├── paint.qml │ │ │ ├── rectangle.qml │ │ │ ├── shadow.qml │ │ │ ├── spirograph.qml │ │ │ └── transform.qml │ └── transformation.md ├── ch09-shapes │ ├── animations.md │ ├── assets │ │ └── automatic │ │ │ ├── animation.png │ │ │ ├── basic.png │ │ │ ├── fillmode.png │ │ │ ├── gradients.png │ │ │ └── paths.png │ ├── basics.md │ ├── gradients.md │ ├── paths.md │ ├── shapes.md │ ├── src │ │ ├── screenshots.qml │ │ └── shapes │ │ │ ├── Marker.qml │ │ │ ├── animation.qml │ │ │ ├── basic.qml │ │ │ ├── fillmode.qml │ │ │ ├── gradients.qml │ │ │ └── paths.qml │ └── summary.md ├── ch10-effects │ ├── affecting-particles.md │ ├── assets │ │ ├── age.png │ │ ├── angledirection.png │ │ ├── angledirection2.png │ │ ├── attractor.png │ │ ├── chapter07_diagram.graffle │ │ ├── colorvariation.png │ │ ├── curtain.png │ │ ├── curtain_diagram.png │ │ ├── curve.png │ │ ├── defaultshader.png │ │ ├── directionquest.png │ │ ├── fastblur.png │ │ ├── firework_final.png │ │ ├── firework_rockets.png │ │ ├── firework_teaser.png │ │ ├── friction.png │ │ ├── geniebending.png │ │ ├── genieeffect.png │ │ ├── geniehalfside.png │ │ ├── genieminimize.png │ │ ├── geniescene.png │ │ ├── geniesimplebending.png │ │ ├── geniesmoothbending.png │ │ ├── graphicseffects.csv │ │ ├── graphicseffectstestbed.png │ │ ├── gravity.png │ │ ├── itemparticle.png │ │ ├── openglpipeline.png │ │ ├── particle_directions.png │ │ ├── particleparameters.png │ │ ├── particlesystem.png │ │ ├── pointdirection.png │ │ ├── redlense1.png │ │ ├── redlense2.png │ │ ├── redlense3.png │ │ ├── redlense4.png │ │ ├── redlense5.png │ │ ├── rotationvariation.png │ │ ├── simpleparticles.png │ │ ├── simpleparticles2.png │ │ ├── targetdirection.png │ │ ├── turbulence.png │ │ ├── wander.png │ │ └── wave.png │ ├── curtain-effect.md │ ├── directed-particles.md │ ├── effects.md │ ├── fragment-shaders.md │ ├── opengl-shaders.md │ ├── particle-groups.md │ ├── particle-painters.md │ ├── particle-parameters.md │ ├── particles.md │ ├── shader-elements.md │ ├── simple-simulation.md │ ├── src │ │ ├── effects │ │ │ ├── assets │ │ │ │ ├── background.png │ │ │ │ ├── background@2x.png │ │ │ │ ├── bug.jpg │ │ │ │ ├── butterfly.png │ │ │ │ ├── coastline.jpg │ │ │ │ ├── fabric.png │ │ │ │ ├── fabric@2x.png │ │ │ │ ├── lighthouse.jpg │ │ │ │ ├── longroad.jpg │ │ │ │ └── tulips.jpg │ │ │ ├── curtain │ │ │ │ ├── CurtainEffect.qml │ │ │ │ ├── curtain.frag │ │ │ │ ├── curtain.vert │ │ │ │ └── curtaindemo.qml │ │ │ ├── default │ │ │ │ ├── default.frag │ │ │ │ ├── default.vert │ │ │ │ └── defaultshader.qml │ │ │ ├── genie │ │ │ │ ├── 0 │ │ │ │ │ └── genie0.qml │ │ │ │ ├── 1 │ │ │ │ │ ├── genie1.qml │ │ │ │ │ └── genie1.vert │ │ │ │ ├── 2 │ │ │ │ │ ├── genie2.qml │ │ │ │ │ └── genie2.vert │ │ │ │ ├── 3 │ │ │ │ │ ├── genie3.qml │ │ │ │ │ └── genie3.vert │ │ │ │ ├── 4 │ │ │ │ │ ├── genie4.qml │ │ │ │ │ └── genie4.vert │ │ │ │ └── demo │ │ │ │ │ ├── GenieEffect.qml │ │ │ │ │ ├── geniedemo.qml │ │ │ │ │ └── genieeffect.vert │ │ │ ├── redlense │ │ │ │ ├── 1 │ │ │ │ │ └── redlense1.qml │ │ │ │ └── 2 │ │ │ │ │ ├── red1.frag │ │ │ │ │ ├── red2.frag │ │ │ │ │ ├── red3.frag │ │ │ │ │ └── redlense2.qml │ │ │ └── wave │ │ │ │ ├── wave.frag │ │ │ │ └── wave.qml │ │ └── particles │ │ │ ├── Tracer.qml │ │ │ ├── age.qml │ │ │ ├── angledirection.qml │ │ │ ├── angledirection2.qml │ │ │ ├── assets │ │ │ ├── background medium.png │ │ │ ├── background medium@2x.png │ │ │ ├── background.png │ │ │ ├── background@2x.png │ │ │ ├── box_blue.png │ │ │ ├── box_blue@2x.png │ │ │ ├── box_green.png │ │ │ ├── box_green@2x.png │ │ │ ├── box_red.png │ │ │ ├── box_red@2x.png │ │ │ ├── circle_blue.png │ │ │ ├── circle_blue@2x.png │ │ │ ├── circle_green.png │ │ │ ├── circle_green@2x.png │ │ │ ├── circle_red.png │ │ │ ├── circle_red@2x.png │ │ │ ├── particle.png │ │ │ ├── rect.png │ │ │ ├── rocket.png │ │ │ ├── rocket@2x.png │ │ │ ├── star.png │ │ │ ├── triangle_blue.png │ │ │ ├── triangle_blue@2x.png │ │ │ ├── triangle_green.png │ │ │ ├── triangle_green@2x.png │ │ │ ├── triangle_red.png │ │ │ ├── triangle_red@2x.png │ │ │ └── ufo.png │ │ │ ├── attractor.qml │ │ │ ├── directionexample.qml │ │ │ ├── firework.qml │ │ │ ├── firework1.qml │ │ │ ├── friction.qml │ │ │ ├── gravity.qml │ │ │ ├── itemparticle.qml │ │ │ ├── particlevariation.qml │ │ │ ├── pointdirection.qml │ │ │ ├── rotationvariation.qml │ │ │ ├── simple.qml │ │ │ ├── simple2.qml │ │ │ ├── targetdirection.qml │ │ │ ├── turbulence.qml │ │ │ └── wander.qml │ ├── summary.md │ ├── vertex-shader.md │ └── wave-effect.md ├── ch11-multimedia │ ├── assets │ │ └── camera-ui.png │ ├── capturing-images.md │ ├── multimedia.md │ ├── playing-media.md │ ├── sound-effects.md │ ├── src │ │ ├── camera-capture │ │ │ ├── basic.qml │ │ │ └── complete.qml │ │ ├── playback-audio │ │ │ └── main.qml │ │ ├── playback-controls │ │ │ ├── main.qml │ │ │ └── sample-5s.mp4 │ │ ├── playback-video │ │ │ └── main.qml │ │ └── sound-effects │ │ │ ├── basic.qml │ │ │ ├── beep.wav │ │ │ ├── complete.qml │ │ │ └── swosh.wav │ ├── summary.md │ └── video-streams.md ├── ch12-qtquick3d │ ├── animations.md │ ├── assets.md │ ├── assets │ │ ├── asset-first-input.png │ │ ├── asset-second-input.png │ │ ├── balsamui-1.png │ │ ├── balsamui-2.png │ │ ├── basicscene.png │ │ ├── blender-export-collada.png │ │ ├── blender-export-menu.png │ │ ├── blender-monkey-with-bones.png │ │ ├── blender-monkey.png │ │ ├── default-material.png │ │ ├── light_directional.png │ │ ├── light_point.png │ │ ├── light_spot.png │ │ ├── materials-no-skybox.png │ │ ├── materials.png │ │ ├── meshes.png │ │ ├── mix-2d-and-3d.png │ │ ├── monkey.gif │ │ ├── principled-material.png │ │ └── rotation.png │ ├── basics.md │ ├── intro.md │ ├── materials-and-light.md │ ├── mixing-2d-and-3d.md │ ├── src │ │ ├── animations │ │ │ ├── CMakeLists.txt │ │ │ ├── Monkey_with_bones.qml │ │ │ ├── blender │ │ │ │ ├── monkey-with-bones.blend │ │ │ │ └── monkey-with-bones.dae │ │ │ ├── main.cpp │ │ │ ├── main.qml │ │ │ └── meshes │ │ │ │ └── suzanne.mesh │ │ ├── basicasset │ │ │ ├── CMakeLists.txt │ │ │ ├── Monkey.qml │ │ │ ├── blender │ │ │ │ └── monkey.blend │ │ │ ├── main.cpp │ │ │ ├── main.qml │ │ │ ├── meshes │ │ │ │ └── suzanne.mesh │ │ │ └── monkey.dae │ │ ├── basicmaterials │ │ │ ├── CMakeLists.txt │ │ │ ├── main.cpp │ │ │ ├── main.qml │ │ │ ├── maps │ │ │ │ └── skybox.jpg │ │ │ └── meshes │ │ │ │ └── suzanne.mesh │ │ ├── basicscene │ │ │ ├── CMakeLists.txt │ │ │ ├── main.cpp │ │ │ └── main.qml │ │ ├── defaultmaterial │ │ │ ├── CMakeLists.txt │ │ │ ├── main.cpp │ │ │ ├── main.qml │ │ │ ├── maps │ │ │ │ └── skybox.jpg │ │ │ └── meshes │ │ │ │ └── suzanne.mesh │ │ ├── lights │ │ │ ├── CMakeLists.txt │ │ │ ├── main.cpp │ │ │ └── main.qml │ │ ├── meshes │ │ │ ├── CMakeLists.txt │ │ │ ├── main.cpp │ │ │ └── main.qml │ │ ├── mix2d3d │ │ │ ├── CMakeLists.txt │ │ │ ├── main.cpp │ │ │ ├── main.qml │ │ │ └── meshes │ │ │ │ └── suzanne.mesh │ │ ├── principledmaterial │ │ │ ├── CMakeLists.txt │ │ │ ├── main.cpp │ │ │ ├── main.qml │ │ │ ├── maps │ │ │ │ └── skybox.jpg │ │ │ └── meshes │ │ │ │ └── suzanne.mesh │ │ └── translations │ │ │ ├── CMakeLists.txt │ │ │ ├── main.cpp │ │ │ └── main.qml │ └── summary.md ├── ch13-networking │ ├── authentication.md │ ├── http-requests.md │ ├── images │ │ ├── oauth-spotify-app.png │ │ ├── oauth-spotify-dashboard.png │ │ ├── oauth-spotify-result.png │ │ ├── ws_client.png │ │ └── ws_echo.png │ ├── local-files.md │ ├── networking.md │ ├── rest-api.md │ ├── serve-qml.md │ ├── src │ │ ├── http_v1 │ │ │ ├── Button.qml │ │ │ ├── http_v1.qmlproject │ │ │ ├── main.qml │ │ │ ├── main2.qml │ │ │ ├── qmldir │ │ │ ├── remote.qml │ │ │ └── remote2.qml │ │ ├── httprequest │ │ │ ├── Thumbnail.qml │ │ │ ├── httprequest.qml │ │ │ └── httprequest.qmlproject │ │ ├── localfiles │ │ │ ├── colors.json │ │ │ ├── colors.xml │ │ │ ├── localfiles.qml │ │ │ ├── localfiles.qmlproject │ │ │ └── localfilesxmlmodel.qml │ │ ├── oauth │ │ │ ├── CMakeLists.txt │ │ │ ├── main.cpp │ │ │ ├── main.qml │ │ │ ├── spotifyapi.cpp │ │ │ ├── spotifyapi.h │ │ │ ├── spotifymodel.cpp │ │ │ └── spotifymodel.h │ │ ├── requests │ │ │ └── http │ │ │ │ ├── colors.json │ │ │ │ └── colors.xml │ │ ├── rest │ │ │ ├── Button.qml │ │ │ ├── StatusLabel.qml │ │ │ ├── colorservice.js │ │ │ ├── rest.qml │ │ │ └── rest.qmlproject │ │ ├── restservice │ │ │ ├── colors.json │ │ │ └── server.py │ │ ├── serve-qml-basics │ │ │ ├── GistExample.qml │ │ │ ├── LocalHostExample.qml │ │ │ └── RemoteComponent.qml │ │ ├── serve-qml-networked-components │ │ │ ├── LibraryExample.qml │ │ │ ├── SimpleExample.qml │ │ │ └── remote │ │ │ │ ├── Button.qml │ │ │ │ ├── RemoteComponent.qml │ │ │ │ └── qmldir │ │ ├── ws │ │ │ ├── ws_client │ │ │ │ ├── ChatInput.qml │ │ │ │ ├── ChatView.qml │ │ │ │ ├── Label.qml │ │ │ │ ├── test.qml │ │ │ │ ├── ws_client.qml │ │ │ │ └── ws_client.qmlproject │ │ │ └── ws_server │ │ │ │ └── server.js │ │ └── wsecho │ │ │ ├── wsecho.qml │ │ │ └── wsecho.qmlproject │ ├── summary.md │ ├── templates.md │ └── web-sockets.md ├── ch14-storage │ ├── images │ │ └── crazy_rect.png │ ├── local-storage.md │ ├── settings.md │ ├── src │ │ ├── colorstore │ │ │ └── colorstore.qml │ │ ├── db-snippet │ │ │ └── main.qml │ │ ├── rectangle │ │ │ └── main.qml │ │ └── sqloffline │ │ │ ├── cities.csv │ │ │ └── csvtosql.py │ └── storage.md ├── ch15-dynamicqml │ ├── assets │ │ └── automatic │ │ │ ├── connections.png │ │ │ ├── empty.dir │ │ │ ├── loader-analog.png │ │ │ └── loader-digital.png │ ├── dynamic-objects.md │ ├── dynamic-qml.md │ ├── loading-components.md │ ├── src │ │ ├── connections-parent │ │ │ ├── Flasher.qml │ │ │ └── main.qml │ │ ├── connections │ │ │ └── main.qml │ │ ├── create-object │ │ │ └── main.qml │ │ ├── dynamic-scene │ │ │ ├── create-object.js │ │ │ ├── main.qml │ │ │ ├── rocket.png │ │ │ ├── rocket.qml │ │ │ ├── rocket@2x.png │ │ │ ├── ufo.png │ │ │ ├── ufo.qml │ │ │ └── ufo@2x.png │ │ ├── load-component │ │ │ ├── create-component.js │ │ │ ├── dynamic-image.qml │ │ │ ├── image1.png │ │ │ ├── image2.png │ │ │ └── main.qml │ │ ├── loader │ │ │ ├── Analog.qml │ │ │ ├── Digital.qml │ │ │ ├── main.qml │ │ │ ├── ss-analog.qml │ │ │ └── ss-digital.qml │ │ └── screenshots.qml │ ├── summary.md │ └── tracking-objects.md ├── ch16-javascript │ ├── assets │ │ └── jsconsole.png │ ├── html-qml.md │ ├── javascript.md │ ├── js-console.md │ ├── js-language.md │ ├── js-objects.md │ └── src │ │ └── JSConsole │ │ ├── JSConsole.qml │ │ ├── JSConsole.qmlproject │ │ └── jsconsole.js ├── ch17-qtcpp │ ├── assets │ │ └── cityui.graffle │ ├── boilerplate.md │ ├── build-system.md │ ├── common-classes.md │ ├── cpp-models.md │ ├── images │ │ ├── modelview.png │ │ ├── storecontent.png │ │ └── yourapplication.png │ ├── qobject.md │ ├── qtcpp.md │ └── src │ │ ├── CMakeLists.txt │ │ ├── coreapp │ │ ├── CMakeLists.txt │ │ └── main.cpp │ │ ├── modelview │ │ ├── Background.qml │ │ ├── CMakeLists.txt │ │ ├── ListDelegate.qml │ │ ├── ListHighlight.qml │ │ ├── TextEntry.qml │ │ ├── dataentrymodel.cpp │ │ ├── dataentrymodel.h │ │ ├── deployment.pri │ │ ├── dynamicentrymodel.cpp │ │ ├── dynamicentrymodel.h │ │ ├── main.cpp │ │ ├── main.qml │ │ ├── qml.qrc │ │ ├── remove.png │ │ ├── roleentrymodel.cpp │ │ └── roleentrymodel.h │ │ ├── qtfoundation │ │ ├── CMakeLists.txt │ │ └── tst_foundation.cpp │ │ ├── remove.png │ │ ├── uiapp │ │ ├── .gitignore │ │ ├── CMakeLists.txt │ │ ├── main.cpp │ │ ├── mainwindow.cpp │ │ └── mainwindow.h │ │ └── valuemodel │ │ ├── Background.qml │ │ ├── CMakeLists.txt │ │ ├── ListDelegate.qml │ │ ├── ListHighlight.qml │ │ ├── TextEntry.qml │ │ ├── adaptivemodel.cpp │ │ ├── adaptivemodel.h │ │ ├── data │ │ ├── cities.csv │ │ ├── cities.json │ │ └── convert.py │ │ ├── deployment.pri │ │ ├── flags │ │ ├── 22px-Flag_of_Argentina.svg.png │ │ ├── 22px-Flag_of_Bangladesh.svg.png │ │ ├── 22px-Flag_of_Brazil.svg.png │ │ ├── 22px-Flag_of_Chile.svg.png │ │ ├── 22px-Flag_of_Colombia.svg.png │ │ ├── 22px-Flag_of_Cote_d'Ivoire.svg.png │ │ ├── 22px-Flag_of_Egypt.svg.png │ │ ├── 22px-Flag_of_Germany.svg.png │ │ ├── 22px-Flag_of_India.svg.png │ │ ├── 22px-Flag_of_Indonesia.svg.png │ │ ├── 22px-Flag_of_Iran.svg.png │ │ ├── 22px-Flag_of_Iraq.svg.png │ │ ├── 22px-Flag_of_Japan.svg.png │ │ ├── 22px-Flag_of_Kenya.svg.png │ │ ├── 22px-Flag_of_Mexico.svg.png │ │ ├── 22px-Flag_of_Myanmar.svg.png │ │ ├── 22px-Flag_of_Nigeria.svg.png │ │ ├── 22px-Flag_of_North_Korea.svg.png │ │ ├── 22px-Flag_of_Pakistan.svg.png │ │ ├── 22px-Flag_of_Peru.svg.png │ │ ├── 22px-Flag_of_Russia.svg.png │ │ ├── 22px-Flag_of_Saudi_Arabia.svg.png │ │ ├── 22px-Flag_of_Singapore.svg.png │ │ ├── 22px-Flag_of_South_Africa.svg.png │ │ ├── 22px-Flag_of_South_Korea.svg.png │ │ ├── 22px-Flag_of_Spain.svg.png │ │ ├── 22px-Flag_of_Thailand.svg.png │ │ ├── 22px-Flag_of_Turkey.svg.png │ │ ├── 22px-Flag_of_Vietnam.svg.png │ │ ├── 22px-Flag_of_the_Democratic_Republic_of_the_Congo.svg.png │ │ ├── 22px-Flag_of_the_People's_Republic_of_China.svg.png │ │ ├── 22px-Flag_of_the_United_Kingdom.svg.png │ │ └── 22px-Flag_of_the_United_States.svg.png │ │ ├── main.cpp │ │ ├── main.qml │ │ ├── qml.qrc │ │ ├── remove.png │ │ ├── valuemodel.cpp │ │ └── valuemodel.h ├── ch18-extensions │ ├── create-plugin.md │ ├── extending-qml.md │ ├── fileio-demo.md │ ├── images │ │ ├── cityui_empty.png │ │ ├── cityui_mock.png │ │ ├── cityui_populated.png │ │ └── cityui_table.png │ ├── plugin-content.md │ ├── qml-runtime.md │ ├── src │ │ ├── CMakeLists.txt │ │ ├── CityUI │ │ │ ├── CMakeLists.txt │ │ │ ├── LICENSE.md │ │ │ ├── cities.json │ │ │ ├── deployment.pri │ │ │ ├── flags │ │ │ │ ├── 22px-Flag_of_Argentina.svg.png │ │ │ │ ├── 22px-Flag_of_Bangladesh.svg.png │ │ │ │ ├── 22px-Flag_of_Brazil.svg.png │ │ │ │ ├── 22px-Flag_of_Chile.svg.png │ │ │ │ ├── 22px-Flag_of_Colombia.svg.png │ │ │ │ ├── 22px-Flag_of_Cote_d'Ivoire.svg.png │ │ │ │ ├── 22px-Flag_of_Egypt.svg.png │ │ │ │ ├── 22px-Flag_of_Germany.svg.png │ │ │ │ ├── 22px-Flag_of_India.svg.png │ │ │ │ ├── 22px-Flag_of_Indonesia.svg.png │ │ │ │ ├── 22px-Flag_of_Iran.svg.png │ │ │ │ ├── 22px-Flag_of_Iraq.svg.png │ │ │ │ ├── 22px-Flag_of_Japan.svg.png │ │ │ │ ├── 22px-Flag_of_Kenya.svg.png │ │ │ │ ├── 22px-Flag_of_Mexico.svg.png │ │ │ │ ├── 22px-Flag_of_Myanmar.svg.png │ │ │ │ ├── 22px-Flag_of_Nigeria.svg.png │ │ │ │ ├── 22px-Flag_of_North_Korea.svg.png │ │ │ │ ├── 22px-Flag_of_Pakistan.svg.png │ │ │ │ ├── 22px-Flag_of_Peru.svg.png │ │ │ │ ├── 22px-Flag_of_Russia.svg.png │ │ │ │ ├── 22px-Flag_of_Saudi_Arabia.svg.png │ │ │ │ ├── 22px-Flag_of_Singapore.svg.png │ │ │ │ ├── 22px-Flag_of_South_Africa.svg.png │ │ │ │ ├── 22px-Flag_of_South_Korea.svg.png │ │ │ │ ├── 22px-Flag_of_Spain.svg.png │ │ │ │ ├── 22px-Flag_of_Thailand.svg.png │ │ │ │ ├── 22px-Flag_of_Turkey.svg.png │ │ │ │ ├── 22px-Flag_of_Vietnam.svg.png │ │ │ │ ├── 22px-Flag_of_the_Democratic_Republic_of_the_Congo.svg.png │ │ │ │ ├── 22px-Flag_of_the_People's_Republic_of_China.svg.png │ │ │ │ ├── 22px-Flag_of_the_United_Kingdom.svg.png │ │ │ │ └── 22px-Flag_of_the_United_States.svg.png │ │ │ ├── main.cpp │ │ │ ├── main.qml │ │ │ ├── qml.qrc │ │ │ └── remove.png │ │ ├── basicmain │ │ │ ├── CMakeLists.txt │ │ │ ├── basicmain.qrc │ │ │ ├── main.cpp │ │ │ └── main.qml │ │ └── fileio │ │ │ ├── CMakeLists.txt │ │ │ ├── fileio.cpp │ │ │ ├── fileio.h │ │ │ ├── fileio_plugin.cpp │ │ │ └── qmldir │ ├── summary.md │ └── using-fileio.md ├── ch19-python │ ├── assets │ │ ├── cpu-load-model.png │ │ ├── pyside2-hello-world.png │ │ ├── pyside6-hello-world.png │ │ └── qml-hello-world.png │ ├── build-app.md │ ├── installing.md │ ├── introduction.md │ ├── limitations.md │ ├── qt-python.md │ ├── src │ │ ├── basic │ │ │ ├── basic.py │ │ │ └── main.qml │ │ ├── class-context-property │ │ │ ├── class.py │ │ │ └── main.qml │ │ ├── class-registered-type │ │ │ ├── class.py │ │ │ └── main.qml │ │ ├── model │ │ │ ├── main.qml │ │ │ └── model.py │ │ └── property │ │ │ ├── main.qml │ │ │ └── property.py │ └── summary.md ├── ch20-qtformcu │ ├── assets │ │ ├── counter.png │ │ ├── create-project-1.png │ │ ├── create-project-2.png │ │ ├── create-project-3.png │ │ ├── devices.png │ │ ├── hello-world-orange.png │ │ ├── hello-world-red.png │ │ ├── installer-mcu.png │ │ ├── kits.png │ │ ├── model-1.png │ │ ├── model-2.png │ │ ├── model-3.png │ │ ├── qtcreator-qml-import-path.png │ │ ├── qtcreator-with-project.png │ │ └── qul-hello-world.png │ ├── cpp.md │ ├── helloworld.md │ ├── models.md │ ├── qtformcu.md │ ├── setup.md │ ├── src │ │ ├── cppintegration │ │ │ ├── CMakeLists.txt │ │ │ ├── PlainButton.qml │ │ │ ├── counter.cpp │ │ │ ├── counter.h │ │ │ └── cppintegration.qml │ │ ├── cppmodel │ │ │ ├── CMakeLists.txt │ │ │ ├── citymodel.cpp │ │ │ ├── citymodel.h │ │ │ └── cppmodel.qml │ │ └── helloworld │ │ │ ├── CMakeLists.txt │ │ │ └── helloworld.qml │ └── summary.md ├── index.md └── preface │ ├── acknowledgements.md │ ├── assets │ ├── clorquet.jpg │ ├── jryannel.jpg │ └── jthelin.jpg │ ├── authors.md │ └── preface.md ├── package.json ├── scripts ├── build-examples.sh ├── lint-examples.sh ├── make-screenshots.sh └── package-examples.sh └── yarn.lock /.github/workflows/release.yaml: -------------------------------------------------------------------------------- 1 | name: build-release 2 | on: 3 | push: 4 | branches: 5 | - 'release' 6 | 7 | jobs: 8 | build-qt-io: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Trigger qt.io build 12 | env: 13 | QT_IO_TRIGGER: ${{ secrets.QT_IO_TRIGGER }} 14 | run: curl $QT_IO_TRIGGER 15 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.16.0) 2 | 3 | project(qt6book) 4 | 5 | add_subdirectory(docs) 6 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # Licenses 2 | 3 | - The LICENSE.text and LICENSE.code declares the license used for text and code unless otherwise stated differently. 4 | 5 | # Additional Licenses 6 | 7 | The following files are provided under the following licenses: 8 | 9 | - docs/ch12-qtquick3d/src/basicmaterials/maps/skybox.jpg 10 | 11 | Creative Commons Attribution-Share Alike 3.0 Unported 12 | Owned by SpektorDude, source https://commons.wikimedia.org/wiki/File:Skybox.jpg 13 | -------------------------------------------------------------------------------- /assets/frontpage.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/assets/frontpage.jpg -------------------------------------------------------------------------------- /assets/frontpage.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/assets/frontpage.pdf -------------------------------------------------------------------------------- /docs/.vuepress/styles/index.styl: -------------------------------------------------------------------------------- 1 | @media print { 2 | 3 | /* The page */ 4 | @page { 5 | size: portrait; 6 | 7 | margin-left: 2.54cm; 8 | margin-right: 2.54cm; 9 | margin-top: 2.54cm; 10 | margin-bottom: 3.76cm; 11 | } 12 | 13 | /* Tips, caveats, etc */ 14 | div.custom-block { 15 | /* Avoid page-breaks */ 16 | page-break-inside: avoid; 17 | } 18 | 19 | /* All images */ 20 | img { 21 | /* Center */ 22 | display: block; 23 | margin-left: auto; 24 | margin-right: auto; 25 | 26 | /* Avoid page-breaks */ 27 | page-break-inside: avoid; 28 | } 29 | 30 | /* Print links */ 31 | p a::after { 32 | content: " (" attr(href) ") "; 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /docs/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.16.0) 2 | 3 | add_subdirectory(ch07-modelview/src) 4 | add_subdirectory(ch16-qtcpp/src) 5 | add_subdirectory(ch17-extensions/src) 6 | -------------------------------------------------------------------------------- /docs/ch01-meetqt/assets/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch01-meetqt/assets/background.png -------------------------------------------------------------------------------- /docs/ch01-meetqt/assets/ch01_diragrams.graffle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch01-meetqt/assets/ch01_diragrams.graffle -------------------------------------------------------------------------------- /docs/ch01-meetqt/assets/ch01_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch01-meetqt/assets/ch01_overview.png -------------------------------------------------------------------------------- /docs/ch01-meetqt/assets/essential_modules.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch01-meetqt/assets/essential_modules.png -------------------------------------------------------------------------------- /docs/ch01-meetqt/assets/pinwheel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch01-meetqt/assets/pinwheel.png -------------------------------------------------------------------------------- /docs/ch01-meetqt/assets/pole.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch01-meetqt/assets/pole.png -------------------------------------------------------------------------------- /docs/ch01-meetqt/assets/qt-modules.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch01-meetqt/assets/qt-modules.png -------------------------------------------------------------------------------- /docs/ch01-meetqt/assets/qt6_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch01-meetqt/assets/qt6_overview.png -------------------------------------------------------------------------------- /docs/ch01-meetqt/assets/scene.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch01-meetqt/assets/scene.png -------------------------------------------------------------------------------- /docs/ch01-meetqt/assets/scene2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch01-meetqt/assets/scene2.png -------------------------------------------------------------------------------- /docs/ch01-meetqt/assets/showcase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch01-meetqt/assets/showcase.png -------------------------------------------------------------------------------- /docs/ch01-meetqt/assets/showcase2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch01-meetqt/assets/showcase2.png -------------------------------------------------------------------------------- /docs/ch01-meetqt/assets/showcase3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch01-meetqt/assets/showcase3.png -------------------------------------------------------------------------------- /docs/ch01-meetqt/assets/showcase4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch01-meetqt/assets/showcase4.png -------------------------------------------------------------------------------- /docs/ch01-meetqt/src/Showcase/images/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch01-meetqt/src/Showcase/images/background.png -------------------------------------------------------------------------------- /docs/ch01-meetqt/src/Showcase/images/blur.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch01-meetqt/src/Showcase/images/blur.png -------------------------------------------------------------------------------- /docs/ch01-meetqt/src/Showcase/images/pinwheel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch01-meetqt/src/Showcase/images/pinwheel.png -------------------------------------------------------------------------------- /docs/ch01-meetqt/src/Showcase/images/pole.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch01-meetqt/src/Showcase/images/pole.png -------------------------------------------------------------------------------- /docs/ch01-meetqt/src/Showcase/showcase.qmlproject: -------------------------------------------------------------------------------- 1 | /* File generated by Qt Creator, version 2.4.1 */ 2 | 3 | import QmlProject 1.1 4 | 5 | Project { 6 | mainFile: "Showcase.qml" 7 | 8 | /* Include .qml, .js, and image files from current directory and subdirectories */ 9 | QmlFiles { 10 | directory: "." 11 | } 12 | JavaScriptFiles { 13 | directory: "." 14 | } 15 | ImageFiles { 16 | directory: "." 17 | } 18 | /* List of plugin directories passed to QML runtime */ 19 | // importPaths: [ "../exampleplugin" ] 20 | } 21 | -------------------------------------------------------------------------------- /docs/ch01-meetqt/src/Showcase/something.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch01-meetqt/src/Showcase/something.png -------------------------------------------------------------------------------- /docs/ch02-start/assets/example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch02-start/assets/example.png -------------------------------------------------------------------------------- /docs/ch02-start/assets/qtcreator-run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch02-start/assets/qtcreator-run.png -------------------------------------------------------------------------------- /docs/ch02-start/quick-start.md: -------------------------------------------------------------------------------- 1 | # Quick Start 2 | 3 | This chapter will introduce you to developing with Qt 6. We will show you how to install the Qt SDK and how you can create as well as run a simple *hello world* application using the Qt Creator IDE. 4 | 5 | -------------------------------------------------------------------------------- /docs/ch02-start/summary.md: -------------------------------------------------------------------------------- 1 | # Summary 2 | 3 | We have seen how to install the Qt SDK and how to create our first application. Then we walked you through the different application types to give you an overview of Qt, showing off some features Qt offers for application development. I hope you got a good impression that Qt is a very rich user interface toolkit and offers everything an application developer can hope for and more. Still, Qt does not lock you into specific libraries, as you can always use other libraries, or even extend Qt yourself. It is also rich when it comes to supporting different application models: console, classic desktop user interface, and touch user interface. 4 | -------------------------------------------------------------------------------- /docs/ch03-qtcreator/assets/creator-edit-shortcuts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch03-qtcreator/assets/creator-edit-shortcuts.png -------------------------------------------------------------------------------- /docs/ch03-qtcreator/assets/creator-editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch03-qtcreator/assets/creator-editor.png -------------------------------------------------------------------------------- /docs/ch03-qtcreator/assets/creator-locator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch03-qtcreator/assets/creator-locator.png -------------------------------------------------------------------------------- /docs/ch03-qtcreator/assets/creator-welcome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch03-qtcreator/assets/creator-welcome.png -------------------------------------------------------------------------------- /docs/ch03-qtcreator/assets/locator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch03-qtcreator/assets/locator.png -------------------------------------------------------------------------------- /docs/ch03-qtcreator/assets/qtcreator-screenshots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch03-qtcreator/assets/qtcreator-screenshots.png -------------------------------------------------------------------------------- /docs/ch03-qtcreator/debugging.md: -------------------------------------------------------------------------------- 1 | # Debugging 2 | 3 | Qt Creator is an easy to use and well designed IDE to code your Qt C++ and QML projects. It has world class `CMake` support and is pre-configured for Qt C++ development. Due to its excellent C++ support it can also be used for any other vanilla C++ projects. 4 | 5 | ::: tip 6 | Hmm, I just realized I have not used debugging a lot. I hope this is a good sign. Need to ask someone to help me out here. In the meantime have a look at the [Qt Creator documentation](http://http://doc.qt.io/qtcreator/index.html). 7 | ::: 8 | -------------------------------------------------------------------------------- /docs/ch03-qtcreator/editor.md: -------------------------------------------------------------------------------- 1 | # Using the Editor 2 | 3 | When you open a project or you just created a new project Qt Creator will switch to the edit mode. You should see on the left of your project files and in the center area the code editor. Selecting files on the left will open them in the editor. 4 | 5 | The editor provides syntax highlighting, code-completion, and quick-fixes. Also, it supports several commands for code refactoring. When working with the editor you will have the feeling that everything reacts immediately. This is thanks to the developers of Qt Creator which made the tool feel really snappy. 6 | 7 | ![](./assets/creator-editor.png) 8 | 9 | -------------------------------------------------------------------------------- /docs/ch03-qtcreator/locator.md: -------------------------------------------------------------------------------- 1 | # Locator 2 | 3 | The locator is a central component inside Qt Creator. It allows developers to navigate fast to specific locations inside the source code or inside the help. To open the locator press `Ctrl+K`. 4 | 5 | ![](./assets/locator.png) 6 | 7 | A pop-up is coming from the bottom left and shows a list of options. If you just search a file inside your project just hit the first letter from the file name. The locator also accepts wild-cards, so `\*main.qml` will also work. Otherwise, you can also prefix your search to search for the specific content type. 8 | 9 | ![](./assets/creator-locator.png) 10 | 11 | Please try it out. For example to open the help for the QML element Rectangle open the locator and type `? rectangle`. While you type the locator will update the suggestions until you found the reference you are looking for. 12 | 13 | -------------------------------------------------------------------------------- /docs/ch03-qtcreator/qt-creator.md: -------------------------------------------------------------------------------- 1 | # Qt Creator IDE 2 | 3 | Qt Creator is the default integrated development environment for Qt. It’s written from Qt developers for Qt developers. The IDE is available on all major desktop platforms, e.g. Windows/Mac/Linux. We have already seen customers using Qt Creator on an embedded device. Qt Creator has a lean efficient user interface and it really shines in making the developer productive. Qt Creator can be used to run your Qt Quick user interface but also to compile c++ code and this for your host system or for another device using a cross-compiler. 4 | 5 | ![](./assets/qtcreator-screenshots.png) 6 | 7 | ::: warning 8 | Update screenshots! 9 | ::: 10 | 11 | -------------------------------------------------------------------------------- /docs/ch04-qmlstart/assets/anchorgrid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/assets/anchorgrid.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/assets/anchors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/assets/anchors.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/assets/button_clicked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/assets/button_clicked.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/assets/button_waiting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/assets/button_waiting.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/assets/chapter04.graffle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/assets/chapter04.graffle -------------------------------------------------------------------------------- /docs/ch04-qmlstart/assets/column.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/assets/column.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/assets/flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/assets/flow.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/assets/grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/assets/grid.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/assets/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/assets/image.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/assets/keys.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/assets/keys.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/assets/mousearea1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/assets/mousearea1.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/assets/mousearea2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/assets/mousearea2.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/assets/objects.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/assets/objects.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/assets/objects_overlap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/assets/objects_overlap.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/assets/objects_transformed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/assets/objects_transformed.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/assets/qmltree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/assets/qmltree.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/assets/rectangle2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/assets/rectangle2.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/assets/rectangle3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/assets/rectangle3.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/assets/repeater.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/assets/repeater.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/assets/row.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/assets/row.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/assets/scene.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/assets/scene.pdf -------------------------------------------------------------------------------- /docs/ch04-qmlstart/assets/scene.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/assets/scene.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/assets/text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/assets/text.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/assets/textedit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/assets/textedit.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/assets/textinput.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/assets/textinput.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/assets/textinput3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/assets/textinput3.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/quick-start.md: -------------------------------------------------------------------------------- 1 | # Quick Starter 2 | 3 | 4 | This chapter provides an overview of QML, the declarative user interface language used in Qt 6. We will discuss the QML syntax, which is a tree of elements, followed by an overview of the most important basic elements. Later we will briefly look at how to create our own elements, called components and how to transform elements using property manipulations. Towards the end, we will look at how to arrange elements together in a layout and finally have a look at elements where the user can provide input. 5 | 6 | -------------------------------------------------------------------------------- /docs/ch04-qmlstart/src/components/components.qmlproject: -------------------------------------------------------------------------------- 1 | /* File generated by Qt Creator, version 2.4.1 */ 2 | 3 | import QmlProject 1.1 4 | 5 | Project { 6 | mainFile: "" 7 | 8 | /* Include .qml, .js, and image files from current directory and subdirectories */ 9 | QmlFiles { 10 | directory: "." 11 | } 12 | JavaScriptFiles { 13 | directory: "." 14 | } 15 | ImageFiles { 16 | directory: "." 17 | } 18 | /* List of plugin directories passed to QML runtime */ 19 | // importPaths: [ "../exampleplugin" ] 20 | } 21 | -------------------------------------------------------------------------------- /docs/ch04-qmlstart/src/concepts/assets/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/src/concepts/assets/background.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/src/concepts/assets/triangle_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/src/concepts/assets/triangle_blue.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/src/concepts/assets/triangle_blue@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/src/concepts/assets/triangle_blue@2x.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/src/concepts/assets/triangle_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/src/concepts/assets/triangle_green.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/src/concepts/assets/triangle_green@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/src/concepts/assets/triangle_green@2x.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/src/concepts/assets/triangle_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/src/concepts/assets/triangle_red.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/src/concepts/assets/triangle_red@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/src/concepts/assets/triangle_red@2x.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/src/concepts/concepts.qmlproject: -------------------------------------------------------------------------------- 1 | /* File generated by Qt Creator, version 2.4.1 */ 2 | 3 | import QmlProject 1.1 4 | 5 | Project { 6 | 7 | /* Include .qml, .js, and image files from current directory and subdirectories */ 8 | QmlFiles { 9 | directory: "." 10 | } 11 | JavaScriptFiles { 12 | directory: "." 13 | } 14 | ImageFiles { 15 | directory: "." 16 | } 17 | /* List of plugin directories passed to QML runtime */ 18 | // importPaths: [ "../exampleplugin" ] 19 | } 20 | -------------------------------------------------------------------------------- /docs/ch04-qmlstart/src/input/input.qmlproject: -------------------------------------------------------------------------------- 1 | /* File generated by Qt Creator, version 2.4.1 */ 2 | 3 | import QmlProject 1.1 4 | 5 | Project { 6 | mainFile: "input.qml" 7 | 8 | /* Include .qml, .js, and image files from current directory and subdirectories */ 9 | QmlFiles { 10 | directory: "." 11 | } 12 | JavaScriptFiles { 13 | directory: "." 14 | } 15 | ImageFiles { 16 | directory: "." 17 | } 18 | /* List of plugin directories passed to QML runtime */ 19 | // importPaths: [ "../exampleplugin" ] 20 | } 21 | -------------------------------------------------------------------------------- /docs/ch04-qmlstart/src/layout/anchors.qmlproject: -------------------------------------------------------------------------------- 1 | /* File generated by Qt Creator, version 2.4.1 */ 2 | 3 | import QmlProject 1.1 4 | 5 | Project { 6 | /* Include .qml, .js, and image files from current directory and subdirectories */ 7 | QmlFiles { 8 | directory: "." 9 | } 10 | JavaScriptFiles { 11 | directory: "." 12 | } 13 | ImageFiles { 14 | directory: "." 15 | } 16 | /* List of plugin directories passed to QML runtime */ 17 | // importPaths: [ "../exampleplugin" ] 18 | } 19 | -------------------------------------------------------------------------------- /docs/ch04-qmlstart/src/positioners/assets/beach_s01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/src/positioners/assets/beach_s01.jpg -------------------------------------------------------------------------------- /docs/ch04-qmlstart/src/positioners/assets/beach_s02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/src/positioners/assets/beach_s02.jpg -------------------------------------------------------------------------------- /docs/ch04-qmlstart/src/positioners/assets/beach_s03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/src/positioners/assets/beach_s03.jpg -------------------------------------------------------------------------------- /docs/ch04-qmlstart/src/positioners/assets/beach_s04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/src/positioners/assets/beach_s04.jpg -------------------------------------------------------------------------------- /docs/ch04-qmlstart/src/positioners/positioners.qmlproject: -------------------------------------------------------------------------------- 1 | /* File generated by Qt Creator, version 2.4.1 */ 2 | 3 | import QmlProject 1.1 4 | 5 | Project { 6 | mainFile: "positioners.qml" 7 | 8 | /* Include .qml, .js, and image files from current directory and subdirectories */ 9 | QmlFiles { 10 | directory: "." 11 | } 12 | JavaScriptFiles { 13 | directory: "." 14 | } 15 | ImageFiles { 16 | directory: "." 17 | } 18 | /* List of plugin directories passed to QML runtime */ 19 | // importPaths: [ "../exampleplugin" ] 20 | } 21 | -------------------------------------------------------------------------------- /docs/ch04-qmlstart/src/transformation/assets/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/src/transformation/assets/background.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/src/transformation/assets/background@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/src/transformation/assets/background@2x.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/src/transformation/assets/box_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/src/transformation/assets/box_green.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/src/transformation/assets/box_green@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/src/transformation/assets/box_green@2x.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/src/transformation/assets/box_green@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/src/transformation/assets/box_green@3x.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/src/transformation/assets/circle_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/src/transformation/assets/circle_blue.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/src/transformation/assets/circle_blue@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/src/transformation/assets/circle_blue@2x.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/src/transformation/assets/triangle_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/src/transformation/assets/triangle_red.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/src/transformation/assets/triangle_red@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch04-qmlstart/src/transformation/assets/triangle_red@2x.png -------------------------------------------------------------------------------- /docs/ch04-qmlstart/src/transformation/transformation.qmlproject: -------------------------------------------------------------------------------- 1 | /* File generated by Qt Creator, version 2.4.1 */ 2 | 3 | import QmlProject 1.1 4 | 5 | Project { 6 | mainFile: "transformation.qml" 7 | 8 | /* Include .qml, .js, and image files from current directory and subdirectories */ 9 | QmlFiles { 10 | directory: "." 11 | } 12 | JavaScriptFiles { 13 | directory: "." 14 | } 15 | ImageFiles { 16 | directory: "." 17 | } 18 | /* List of plugin directories passed to QML runtime */ 19 | // importPaths: [ "../exampleplugin" ] 20 | } 21 | -------------------------------------------------------------------------------- /docs/ch05-fluid/advanced.md: -------------------------------------------------------------------------------- 1 | # Advanced Techniques 2 | 3 | Nothing advanced here :-) -------------------------------------------------------------------------------- /docs/ch05-fluid/assets/animation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/assets/animation.png -------------------------------------------------------------------------------- /docs/ch05-fluid/assets/animation_loop.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/assets/animation_loop.gif -------------------------------------------------------------------------------- /docs/ch05-fluid/assets/animation_sequence.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/assets/animation_sequence.png -------------------------------------------------------------------------------- /docs/ch05-fluid/assets/animationtypes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/assets/animationtypes.png -------------------------------------------------------------------------------- /docs/ch05-fluid/assets/animationtypes_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/assets/animationtypes_start.png -------------------------------------------------------------------------------- /docs/ch05-fluid/assets/automatic/easingcurves.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/assets/automatic/easingcurves.png -------------------------------------------------------------------------------- /docs/ch05-fluid/assets/easingtypes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/assets/easingtypes.png -------------------------------------------------------------------------------- /docs/ch05-fluid/assets/groupedanimation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/assets/groupedanimation.png -------------------------------------------------------------------------------- /docs/ch05-fluid/assets/parallelanimation_sequence.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/assets/parallelanimation_sequence.png -------------------------------------------------------------------------------- /docs/ch05-fluid/assets/sequentialanimation_sequence.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/assets/sequentialanimation_sequence.png -------------------------------------------------------------------------------- /docs/ch05-fluid/assets/soccer_init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/assets/soccer_init.png -------------------------------------------------------------------------------- /docs/ch05-fluid/assets/soccer_plan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/assets/soccer_plan.png -------------------------------------------------------------------------------- /docs/ch05-fluid/assets/soccer_stage1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/assets/soccer_stage1.png -------------------------------------------------------------------------------- /docs/ch05-fluid/assets/soccer_stage2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/assets/soccer_stage2.png -------------------------------------------------------------------------------- /docs/ch05-fluid/assets/soccer_stage3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/assets/soccer_stage3.png -------------------------------------------------------------------------------- /docs/ch05-fluid/assets/soccer_stage4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/assets/soccer_stage4.png -------------------------------------------------------------------------------- /docs/ch05-fluid/assets/trafficlight_sketch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/assets/trafficlight_sketch.png -------------------------------------------------------------------------------- /docs/ch05-fluid/assets/trafficlight_states.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/assets/trafficlight_states.png -------------------------------------------------------------------------------- /docs/ch05-fluid/assets/trafficlight_transition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/assets/trafficlight_transition.png -------------------------------------------------------------------------------- /docs/ch05-fluid/assets/trafficlight_ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/assets/trafficlight_ui.png -------------------------------------------------------------------------------- /docs/ch05-fluid/fluid-elements.md: -------------------------------------------------------------------------------- 1 | # Fluid Elements 2 | 3 | Until now, we have mostly looked at some simple graphical elements and how to arrange and manipulate them. 4 | 5 | This chapter is about how to make these changes more interesting by animating them. 6 | 7 | Animations are one of the key foundations for modern, slick user interfaces, and can be employed in your user interface via states, transitions and animations. Each state defines a set of property changes and can be combined with animations on state changes. These changes are described as a transition from one state to another state. 8 | 9 | Besides animations being used during transitions, they can also be used as standalone elements triggered by some scripted events. 10 | 11 | -------------------------------------------------------------------------------- /docs/ch05-fluid/src/animation/animation.qmlproject: -------------------------------------------------------------------------------- 1 | /* File generated by Qt Creator, version 2.4.1 */ 2 | 3 | import QmlProject 1.1 4 | 5 | Project { 6 | mainFile: "" 7 | 8 | /* Include .qml, .js, and image files from current directory and subdirectories */ 9 | QmlFiles { 10 | directory: "." 11 | } 12 | JavaScriptFiles { 13 | directory: "." 14 | } 15 | ImageFiles { 16 | directory: "." 17 | } 18 | /* List of plugin directories passed to QML runtime */ 19 | // importPaths: [ "../exampleplugin" ] 20 | } 21 | -------------------------------------------------------------------------------- /docs/ch05-fluid/src/animation/assets/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/src/animation/assets/background.png -------------------------------------------------------------------------------- /docs/ch05-fluid/src/animation/assets/background@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/src/animation/assets/background@2x.png -------------------------------------------------------------------------------- /docs/ch05-fluid/src/animation/assets/background_medium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/src/animation/assets/background_medium.png -------------------------------------------------------------------------------- /docs/ch05-fluid/src/animation/assets/background_medium@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/src/animation/assets/background_medium@2x.png -------------------------------------------------------------------------------- /docs/ch05-fluid/src/animation/assets/box_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/src/animation/assets/box_blue.png -------------------------------------------------------------------------------- /docs/ch05-fluid/src/animation/assets/box_blue@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/src/animation/assets/box_blue@2x.png -------------------------------------------------------------------------------- /docs/ch05-fluid/src/animation/assets/box_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/src/animation/assets/box_green.png -------------------------------------------------------------------------------- /docs/ch05-fluid/src/animation/assets/box_green@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/src/animation/assets/box_green@2x.png -------------------------------------------------------------------------------- /docs/ch05-fluid/src/animation/assets/box_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/src/animation/assets/box_red.png -------------------------------------------------------------------------------- /docs/ch05-fluid/src/animation/assets/box_red@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/src/animation/assets/box_red@2x.png -------------------------------------------------------------------------------- /docs/ch05-fluid/src/animation/assets/planet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/src/animation/assets/planet.png -------------------------------------------------------------------------------- /docs/ch05-fluid/src/animation/assets/rocket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/src/animation/assets/rocket.png -------------------------------------------------------------------------------- /docs/ch05-fluid/src/animation/assets/rocket2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/src/animation/assets/rocket2.png -------------------------------------------------------------------------------- /docs/ch05-fluid/src/animation/assets/soccer_ball.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/src/animation/assets/soccer_ball.png -------------------------------------------------------------------------------- /docs/ch05-fluid/src/animation/assets/soccer_shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/src/animation/assets/soccer_shadow.png -------------------------------------------------------------------------------- /docs/ch05-fluid/src/animation/assets/ufo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/src/animation/assets/ufo.png -------------------------------------------------------------------------------- /docs/ch05-fluid/src/animation/assets/ufo_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/src/animation/assets/ufo_background.png -------------------------------------------------------------------------------- /docs/ch05-fluid/src/easing/Box.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2 | 3 | Rectangle { 4 | id: root 5 | width: 64 6 | height: 64 7 | color: "#ffffff" 8 | border.color: Qt.darker(color, 1.2) 9 | property alias text: label.text 10 | property color fontColor: '#1f1f1f' 11 | Text { 12 | id: label 13 | anchors.centerIn: parent 14 | font.pixelSize: 14 15 | color: root.fontColor 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /docs/ch05-fluid/src/easing/EasingCurves.qmlproject: -------------------------------------------------------------------------------- 1 | /* File generated by Qt Creator */ 2 | 3 | import QmlProject 1.1 4 | 5 | Project { 6 | mainFile: "EasingCurves.qml" 7 | 8 | /* Include .qml, .js, and image files from current directory and subdirectories */ 9 | QmlFiles { 10 | directory: "." 11 | } 12 | JavaScriptFiles { 13 | directory: "." 14 | } 15 | ImageFiles { 16 | directory: "." 17 | } 18 | /* List of plugin directories passed to QML runtime */ 19 | // importPaths: [ "../exampleplugin" ] 20 | } 21 | -------------------------------------------------------------------------------- /docs/ch05-fluid/src/easing/Tracer.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2 | 3 | Rectangle { 4 | anchors.fill: parent 5 | color: "transparent" 6 | border.color: "red" 7 | } 8 | -------------------------------------------------------------------------------- /docs/ch05-fluid/src/easing/blueprint.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch05-fluid/src/easing/blueprint.jpg -------------------------------------------------------------------------------- /docs/ch06-controls/assets/android-selector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/assets/android-selector.png -------------------------------------------------------------------------------- /docs/ch06-controls/assets/applicationwindow-areas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/assets/applicationwindow-areas.png -------------------------------------------------------------------------------- /docs/ch06-controls/assets/button-background-checked-enlarged.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/assets/button-background-checked-enlarged.9.png -------------------------------------------------------------------------------- /docs/ch06-controls/assets/button-background-enlarged.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/assets/button-background-enlarged.9.png -------------------------------------------------------------------------------- /docs/ch06-controls/assets/dialog-state-machine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/assets/dialog-state-machine.png -------------------------------------------------------------------------------- /docs/ch06-controls/assets/interface-document-window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/assets/interface-document-window.png -------------------------------------------------------------------------------- /docs/ch06-controls/assets/interface-side-by-side-community.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/assets/interface-side-by-side-community.png -------------------------------------------------------------------------------- /docs/ch06-controls/assets/interface-side-by-side-current.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/assets/interface-side-by-side-current.png -------------------------------------------------------------------------------- /docs/ch06-controls/assets/interface-side-by-side-user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/assets/interface-side-by-side-user.png -------------------------------------------------------------------------------- /docs/ch06-controls/assets/interface-stack-about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/assets/interface-stack-about.png -------------------------------------------------------------------------------- /docs/ch06-controls/assets/interface-stack-edit-profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/assets/interface-stack-edit-profile.png -------------------------------------------------------------------------------- /docs/ch06-controls/assets/interface-stack-home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/assets/interface-stack-home.png -------------------------------------------------------------------------------- /docs/ch06-controls/assets/interface-stack-profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/assets/interface-stack-profile.png -------------------------------------------------------------------------------- /docs/ch06-controls/assets/nested-screens.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/assets/nested-screens.png -------------------------------------------------------------------------------- /docs/ch06-controls/assets/side-by-side-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/assets/side-by-side-screen.png -------------------------------------------------------------------------------- /docs/ch06-controls/assets/style-basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/assets/style-basic.png -------------------------------------------------------------------------------- /docs/ch06-controls/assets/style-fusion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/assets/style-fusion.png -------------------------------------------------------------------------------- /docs/ch06-controls/assets/style-imagine-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/assets/style-imagine-example.png -------------------------------------------------------------------------------- /docs/ch06-controls/assets/style-imagine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/assets/style-imagine.png -------------------------------------------------------------------------------- /docs/ch06-controls/assets/style-material.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/assets/style-material.png -------------------------------------------------------------------------------- /docs/ch06-controls/assets/style-universal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/assets/style-universal.png -------------------------------------------------------------------------------- /docs/ch06-controls/assets/viewer-about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/assets/viewer-about.png -------------------------------------------------------------------------------- /docs/ch06-controls/assets/viewer-mobile-drawer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/assets/viewer-mobile-drawer.png -------------------------------------------------------------------------------- /docs/ch06-controls/assets/viewer-mobile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/assets/viewer-mobile.png -------------------------------------------------------------------------------- /docs/ch06-controls/assets/viewer-window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/assets/viewer-window.png -------------------------------------------------------------------------------- /docs/ch06-controls/controls2.md: -------------------------------------------------------------------------------- 1 | # UI Controls 2 | 3 | This chapter shows how to use the Qt Quick Controls module. Qt Quick Controls are used to create advanced user interfaces built from standard components such as buttons, labels, sliders and so on. 4 | 5 | Qt Quick Controls can be arranged using the layout module and are easy to style. Also we will look into the various styles for the different platforms before diving into custom styling. 6 | 7 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/imageviewer-all/+android/qtquickcontrols2.conf: -------------------------------------------------------------------------------- 1 | [Controls] 2 | Style=Material 3 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/imageviewer-all/images/baseline-menu-24px.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/imageviewer-all/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | QGuiApplication app(argc, argv); 8 | 9 | QQmlApplicationEngine engine; 10 | engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); 11 | if (engine.rootObjects().isEmpty()) 12 | return -1; 13 | 14 | return app.exec(); 15 | } 16 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/imageviewer-all/qml.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | main.qml 4 | ImageViewerWindow.qml 5 | +android/main.qml 6 | images/baseline-menu-24px.svg 7 | qtquickcontrols2.conf 8 | +android/qtquickcontrols2.conf 9 | 10 | 11 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/imageviewer-all/qtquickcontrols2.conf: -------------------------------------------------------------------------------- 1 | [Controls] 2 | Style=Fusion 3 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/imageviewer-desktop/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | QGuiApplication app(argc, argv); 8 | 9 | QQmlApplicationEngine engine; 10 | QQuickStyle::setStyle("Fusion"); 11 | engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); 12 | if (engine.rootObjects().isEmpty()) 13 | return -1; 14 | 15 | return app.exec(); 16 | } 17 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/imageviewer-desktop/qml.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | main.qml 4 | 5 | 6 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/imageviewer-mobile/images/baseline-menu-24px.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/imageviewer-mobile/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | QGuiApplication app(argc, argv); 8 | 9 | QQmlApplicationEngine engine; 10 | QQuickStyle::setStyle("Material"); 11 | engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); 12 | if (engine.rootObjects().isEmpty()) 13 | return -1; 14 | 15 | return app.exec(); 16 | } 17 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/imageviewer-mobile/qml.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | main.qml 4 | images/baseline-menu-24px.svg 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/imageviewer-native/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | // ... 6 | 7 | int main(int argc, char *argv[]) 8 | { 9 | QApplication app(argc, argv); 10 | 11 | // ... 12 | 13 | QQmlApplicationEngine engine; 14 | QQuickStyle::setStyle("Fusion"); 15 | engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); 16 | if (engine.rootObjects().isEmpty()) 17 | return -1; 18 | 19 | return app.exec(); 20 | } 21 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/imageviewer-native/qml.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | main.qml 4 | 5 | 6 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/imagine-style/images/imagine/applicationwindow-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/src/imagine-style/images/imagine/applicationwindow-background.png -------------------------------------------------------------------------------- /docs/ch06-controls/src/imagine-style/images/imagine/button-background-checked.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/src/imagine-style/images/imagine/button-background-checked.9.png -------------------------------------------------------------------------------- /docs/ch06-controls/src/imagine-style/images/imagine/button-background-pressed.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/src/imagine-style/images/imagine/button-background-pressed.9.png -------------------------------------------------------------------------------- /docs/ch06-controls/src/imagine-style/images/imagine/button-background.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch06-controls/src/imagine-style/images/imagine/button-background.9.png -------------------------------------------------------------------------------- /docs/ch06-controls/src/imagine-style/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | int main(int argc, char *argv[]) 5 | { 6 | QGuiApplication app(argc, argv); 7 | 8 | QQmlApplicationEngine engine; 9 | engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); 10 | if (engine.rootObjects().isEmpty()) 11 | return -1; 12 | 13 | return app.exec(); 14 | } 15 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/imagine-style/qml.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | main.qml 4 | qtquickcontrols2.conf 5 | images/imagine/button-background-checked.9.png 6 | images/imagine/button-background-pressed.9.png 7 | images/imagine/button-background.9.png 8 | images/imagine/applicationwindow-background.png 9 | 10 | 11 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/imagine-style/qtquickcontrols2.conf: -------------------------------------------------------------------------------- 1 | [Controls] 2 | Style=Imagine 3 | 4 | [Imagine] 5 | Path=:images/imagine 6 | 7 | [Imagine\Palette] 8 | Text=#ffffff 9 | ButtonText=#ffffff 10 | BrightText=#ffffff 11 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/interface-document-window/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | int main(int argc, char *argv[]) 5 | { 6 | QApplication app(argc, argv); 7 | 8 | QQmlApplicationEngine engine; 9 | engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); 10 | if (engine.rootObjects().isEmpty()) 11 | return -1; 12 | 13 | return app.exec(); 14 | } 15 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/interface-document-window/main.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2 | 3 | DocumentWindow { 4 | visible: true 5 | } 6 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/interface-document-window/qml.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | main.qml 4 | DocumentWindow.qml 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/interface-side-by-side/Current.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2 | import QtQuick.Controls 3 | 4 | Page { 5 | header: Label { 6 | text: qsTr("Current") 7 | font.pixelSize: Qt.application.font.pixelSize * 2 8 | padding: 10 9 | } 10 | 11 | Label { 12 | text: qsTr("Current activity") 13 | anchors.centerIn: parent 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/interface-side-by-side/TotalStats.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2 | import QtQuick.Controls 3 | 4 | Page { 5 | header: Label { 6 | text: qsTr("Community Stats") 7 | font.pixelSize: Qt.application.font.pixelSize * 2 8 | padding: 10 9 | } 10 | 11 | // ... 12 | 13 | Column { 14 | anchors.centerIn: parent 15 | spacing: 10 16 | Label { 17 | anchors.horizontalCenter: parent.horizontalCenter 18 | text: qsTr("Community statistics") 19 | } 20 | Button { 21 | anchors.horizontalCenter: parent.horizontalCenter 22 | text: qsTr("Back") 23 | onClicked: swipeView.setCurrentIndex(0); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/interface-side-by-side/UserStats.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2 | import QtQuick.Controls 3 | 4 | Page { 5 | header: Label { 6 | text: qsTr("Your Stats") 7 | font.pixelSize: Qt.application.font.pixelSize * 2 8 | padding: 10 9 | } 10 | 11 | Label { 12 | text: qsTr("User statistics") 13 | anchors.centerIn: parent 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/interface-side-by-side/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | int main(int argc, char *argv[]) 5 | { 6 | QGuiApplication app(argc, argv); 7 | 8 | QQmlApplicationEngine engine; 9 | engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); 10 | if (engine.rootObjects().isEmpty()) 11 | return -1; 12 | 13 | return app.exec(); 14 | } 15 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/interface-side-by-side/main.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2 | import QtQuick.Controls 3 | 4 | ApplicationWindow { 5 | 6 | // ... 7 | 8 | visible: true 9 | width: 640 10 | height: 480 11 | 12 | title: qsTr("Side-by-side") 13 | 14 | SwipeView { 15 | id: swipeView 16 | anchors.fill: parent 17 | 18 | Current { 19 | } 20 | 21 | UserStats { 22 | } 23 | 24 | TotalStats { 25 | } 26 | 27 | // ... 28 | 29 | } 30 | 31 | PageIndicator { 32 | anchors.bottom: parent.bottom 33 | anchors.horizontalCenter: parent.horizontalCenter 34 | 35 | currentIndex: swipeView.currentIndex 36 | count: swipeView.count 37 | } 38 | 39 | // ... 40 | 41 | } 42 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/interface-side-by-side/qml.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | main.qml 4 | Current.qml 5 | UserStats.qml 6 | main.qml 7 | qtquickcontrols2.conf 8 | TotalStats.qml 9 | 10 | 11 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/interface-side-by-side/qtquickcontrols2.conf: -------------------------------------------------------------------------------- 1 | ; This file can be edited to change the style of the application 2 | ; Read "Qt Quick Controls 2 Configuration File" for details: 3 | ; http://doc.qt.io/qt-5/qtquickcontrols2-configuration.html 4 | 5 | [Controls] 6 | Style=Default 7 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/interface-stack/About.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2 | import QtQuick.Controls 3 | 4 | Page { 5 | title: qsTr("About") 6 | 7 | Label { 8 | anchors.centerIn: parent 9 | text: qsTr("About") 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/interface-stack/EditProfile.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2 | import QtQuick.Controls 3 | 4 | Page { 5 | title: qsTr("Edit Profile") 6 | 7 | Label { 8 | anchors.centerIn: parent 9 | text: qsTr("Editing the profile") 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/interface-stack/Home.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2 | import QtQuick.Controls 3 | 4 | Page { 5 | title: qsTr("Home") 6 | 7 | Label { 8 | anchors.centerIn: parent 9 | text: qsTr("Home Screen") 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/interface-stack/Profile.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2 | import QtQuick.Controls 3 | 4 | Page { 5 | title: qsTr("Profile") 6 | 7 | Column { 8 | anchors.centerIn: parent 9 | spacing: 10 10 | Label { 11 | anchors.horizontalCenter: parent.horizontalCenter 12 | text: qsTr("Profile") 13 | } 14 | Button { 15 | anchors.horizontalCenter: parent.horizontalCenter 16 | text: qsTr("Edit"); 17 | onClicked: stackView.push("EditProfile.qml") 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/interface-stack/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | int main(int argc, char *argv[]) 5 | { 6 | QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); 7 | 8 | QGuiApplication app(argc, argv); 9 | 10 | QQmlApplicationEngine engine; 11 | engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); 12 | if (engine.rootObjects().isEmpty()) 13 | return -1; 14 | 15 | return app.exec(); 16 | } 17 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/interface-stack/qml.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | main.qml 4 | Home.qml 5 | Profile.qml 6 | About.qml 7 | qtquickcontrols2.conf 8 | EditProfile.qml 9 | 10 | 11 | -------------------------------------------------------------------------------- /docs/ch06-controls/src/interface-stack/qtquickcontrols2.conf: -------------------------------------------------------------------------------- 1 | ; This file can be edited to change the style of the application 2 | ; Read "Qt Quick Controls 2 Configuration File" for details: 3 | ; http://doc.qt.io/qt-5/qtquickcontrols2-configuration.html 4 | 5 | [Controls] 6 | Style=Default 7 | -------------------------------------------------------------------------------- /docs/ch06-controls/summary.md: -------------------------------------------------------------------------------- 1 | # Summary 2 | 3 | In this chapter we have looked at Qt Quick Controls 2. They offer a set of elements that provide more high-level concepts than the basic QML elements. For most scenarios, you will save memory and gain performance by using the Qt Quick Controls 2, as they are based around optimized C++ logic instead of Javascript and QML. 4 | 5 | We’ve demonstrated how different styles can be used, and how a common code base can be developed using file selectors. This way, a single code base can address multiple platforms with different user interactions and visual styles. 6 | 7 | Finally, we have looked at the Imagine style, which allows you to completely customize the look of a QML application through the use of graphical assets. In this way, an application can be reskinned without any code change whatsoever. 8 | -------------------------------------------------------------------------------- /docs/ch07-modelview/assets/automatic/delegates-basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch07-modelview/assets/automatic/delegates-basic.png -------------------------------------------------------------------------------- /docs/ch07-modelview/assets/automatic/delegates-expanding-large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch07-modelview/assets/automatic/delegates-expanding-large.png -------------------------------------------------------------------------------- /docs/ch07-modelview/assets/automatic/delegates-expanding-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch07-modelview/assets/automatic/delegates-expanding-small.png -------------------------------------------------------------------------------- /docs/ch07-modelview/assets/automatic/delegates-objectmodel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch07-modelview/assets/automatic/delegates-objectmodel.png -------------------------------------------------------------------------------- /docs/ch07-modelview/assets/automatic/empty.dir: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch07-modelview/assets/automatic/empty.dir -------------------------------------------------------------------------------- /docs/ch07-modelview/assets/automatic/gridview-basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch07-modelview/assets/automatic/gridview-basic.png -------------------------------------------------------------------------------- /docs/ch07-modelview/assets/automatic/listview-basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch07-modelview/assets/automatic/listview-basic.png -------------------------------------------------------------------------------- /docs/ch07-modelview/assets/automatic/listview-clip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch07-modelview/assets/automatic/listview-clip.png -------------------------------------------------------------------------------- /docs/ch07-modelview/assets/automatic/listview-header-footer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch07-modelview/assets/automatic/listview-header-footer.png -------------------------------------------------------------------------------- /docs/ch07-modelview/assets/automatic/listview-highlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch07-modelview/assets/automatic/listview-highlight.png -------------------------------------------------------------------------------- /docs/ch07-modelview/assets/automatic/listview-horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch07-modelview/assets/automatic/listview-horizontal.png -------------------------------------------------------------------------------- /docs/ch07-modelview/assets/automatic/listview-sections.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch07-modelview/assets/automatic/listview-sections.png -------------------------------------------------------------------------------- /docs/ch07-modelview/assets/automatic/pathview-coverview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch07-modelview/assets/automatic/pathview-coverview.png -------------------------------------------------------------------------------- /docs/ch07-modelview/assets/automatic/repeater-array.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch07-modelview/assets/automatic/repeater-array.png -------------------------------------------------------------------------------- /docs/ch07-modelview/assets/automatic/repeater-delegate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch07-modelview/assets/automatic/repeater-delegate.png -------------------------------------------------------------------------------- /docs/ch07-modelview/assets/automatic/repeater-model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch07-modelview/assets/automatic/repeater-model.png -------------------------------------------------------------------------------- /docs/ch07-modelview/assets/automatic/repeater-number.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch07-modelview/assets/automatic/repeater-number.png -------------------------------------------------------------------------------- /docs/ch07-modelview/assets/automatic/xmllistmodel-images.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch07-modelview/assets/automatic/xmllistmodel-images.png -------------------------------------------------------------------------------- /docs/ch07-modelview/assets/model-view-delegate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch07-modelview/assets/model-view-delegate.png -------------------------------------------------------------------------------- /docs/ch07-modelview/assets/tableview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch07-modelview/assets/tableview.png -------------------------------------------------------------------------------- /docs/ch07-modelview/model-view.md: -------------------------------------------------------------------------------- 1 | # Model-View-Delegate 2 | 3 | As soon as the amount of data goes beyond the trivial, it is no longer feasible to keep a copy of the data with the presentation. This means that the presentation layer, what is seen by the user, needs to be separated by the data layer, the actual contents. In Qt Quick, data is separated from the presentation through a so called model-view separation. Qt Quick provides a set of premade views in which each data element is the visualization by a delegate. To utilize the system, one must understand these classes and know how to create appropriate delegates to get the right look and feel. 4 | 5 | -------------------------------------------------------------------------------- /docs/ch07-modelview/src/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.16.0) 2 | 3 | add_subdirectory(tableview) 4 | -------------------------------------------------------------------------------- /docs/ch07-modelview/src/ch06.qmlproject: -------------------------------------------------------------------------------- 1 | /* File generated by Qt Creator, version 2.4.1 */ 2 | 3 | import QmlProject 1.1 4 | 5 | Project { 6 | mainFile: "" 7 | 8 | /* Include .qml, .js, and image files from current directory and subdirectories */ 9 | QmlFiles { 10 | directory: "." 11 | } 12 | JavaScriptFiles { 13 | directory: "." 14 | } 15 | ImageFiles { 16 | directory: "." 17 | } 18 | /* List of plugin directories passed to QML runtime */ 19 | // importPaths: [ "../exampleplugin" ] 20 | } 21 | -------------------------------------------------------------------------------- /docs/ch07-modelview/src/delegates/images/earth.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch07-modelview/src/delegates/images/earth.jpeg -------------------------------------------------------------------------------- /docs/ch07-modelview/src/delegates/images/jupiter.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch07-modelview/src/delegates/images/jupiter.jpeg -------------------------------------------------------------------------------- /docs/ch07-modelview/src/delegates/images/mars.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch07-modelview/src/delegates/images/mars.jpeg -------------------------------------------------------------------------------- /docs/ch07-modelview/src/delegates/images/mercury.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch07-modelview/src/delegates/images/mercury.jpeg -------------------------------------------------------------------------------- /docs/ch07-modelview/src/delegates/images/venus.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch07-modelview/src/delegates/images/venus.jpeg -------------------------------------------------------------------------------- /docs/ch07-modelview/src/tableview/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.16.0) 2 | 3 | project(tableview VERSION 1.0.0 LANGUAGES CXX) 4 | 5 | set(CMAKE_CXX_STANDARD 17) 6 | set(CMAKE_CXX_STANDARD_REQUIRED ON) 7 | 8 | set(CMAKE_AUTOMOC ON) 9 | set(CMAKE_AUTORCC ON) 10 | set(CMAKE_AUTOUIC ON) 11 | 12 | find_package(Qt6 COMPONENTS Quick REQUIRED) 13 | 14 | add_executable(tableview 15 | tablemodel.cpp 16 | main.cpp 17 | qml.qrc 18 | ) 19 | 20 | target_link_libraries(tableview PRIVATE Qt6::Quick) 21 | -------------------------------------------------------------------------------- /docs/ch07-modelview/src/tableview/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | #include "tablemodel.h" 6 | 7 | int main(int argc, char *argv[]) 8 | { 9 | QGuiApplication app(argc, argv); 10 | 11 | QQmlApplicationEngine engine; 12 | engine.rootContext()->setContextProperty("tableModel", new TableModel()); 13 | engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); 14 | if (engine.rootObjects().isEmpty()) 15 | return -1; 16 | 17 | return app.exec(); 18 | } 19 | -------------------------------------------------------------------------------- /docs/ch07-modelview/src/tableview/qml.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | main.qml 4 | ../common/Background.qml 5 | ../common/BlueBox.qml 6 | ../common/Box.qml 7 | ../common/GreenBox.qml 8 | ../common/RedBox.qml 9 | ../common/Tracer.qml 10 | ../common/YellowBox.qml 11 | 12 | 13 | -------------------------------------------------------------------------------- /docs/ch07-modelview/src/tableview/tablemodel.cpp: -------------------------------------------------------------------------------- 1 | #include "tablemodel.h" 2 | 3 | TableModel::TableModel() 4 | : QAbstractTableModel() 5 | { 6 | 7 | } 8 | 9 | int TableModel::rowCount(const QModelIndex &) const 10 | { 11 | return 10; 12 | } 13 | 14 | int TableModel::columnCount(const QModelIndex &) const 15 | { 16 | return 10; 17 | } 18 | 19 | QVariant TableModel::data(const QModelIndex &index, int role) const 20 | { 21 | if (role == Qt::DisplayRole) 22 | { 23 | return QString("%1, %2").arg(index.column()).arg(index.row()); 24 | } 25 | else 26 | return QVariant(); 27 | } 28 | -------------------------------------------------------------------------------- /docs/ch07-modelview/src/tableview/tablemodel.h: -------------------------------------------------------------------------------- 1 | #ifndef TABLEMODEL_H 2 | #define TABLEMODEL_H 3 | 4 | #include 5 | 6 | class TableModel : public QAbstractTableModel 7 | { 8 | Q_OBJECT 9 | 10 | public: 11 | TableModel(); 12 | 13 | int rowCount(const QModelIndex &index = QModelIndex()) const override; 14 | int columnCount(const QModelIndex &index = QModelIndex()) const override; 15 | QVariant data(const QModelIndex &index, int role) const override; 16 | }; 17 | 18 | #endif // TABLEMODEL_H 19 | -------------------------------------------------------------------------------- /docs/ch08-canvas/assets/canvas_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch08-canvas/assets/canvas_image.png -------------------------------------------------------------------------------- /docs/ch08-canvas/assets/canvaspaint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch08-canvas/assets/canvaspaint.png -------------------------------------------------------------------------------- /docs/ch08-canvas/assets/composite-operations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch08-canvas/assets/composite-operations.png -------------------------------------------------------------------------------- /docs/ch08-canvas/assets/convenient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch08-canvas/assets/convenient.png -------------------------------------------------------------------------------- /docs/ch08-canvas/assets/glowlines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch08-canvas/assets/glowlines.png -------------------------------------------------------------------------------- /docs/ch08-canvas/assets/gradient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch08-canvas/assets/gradient.png -------------------------------------------------------------------------------- /docs/ch08-canvas/assets/html_glowlines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch08-canvas/assets/html_glowlines.png -------------------------------------------------------------------------------- /docs/ch08-canvas/assets/line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch08-canvas/assets/line.png -------------------------------------------------------------------------------- /docs/ch08-canvas/assets/rectangle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch08-canvas/assets/rectangle.png -------------------------------------------------------------------------------- /docs/ch08-canvas/assets/shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch08-canvas/assets/shadow.png -------------------------------------------------------------------------------- /docs/ch08-canvas/assets/spirograph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch08-canvas/assets/spirograph.png -------------------------------------------------------------------------------- /docs/ch08-canvas/assets/transform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch08-canvas/assets/transform.png -------------------------------------------------------------------------------- /docs/ch08-canvas/composition-modes.md: -------------------------------------------------------------------------------- 1 | # Composition Modes 2 | 3 | Composition allows you to draw a shape and blend it with the existing pixels. The canvas supports several composition modes using the `globalCompositeOperation(mode)` operations. For instance: 4 | 5 | * `source-over` 6 | * `source-in` 7 | * `source-out` 8 | * `source-atop` 9 | 10 | Let's begin with a short example demonstrating the exclusive or composition: 11 | 12 | <<< @/docs/ch08-canvas/src/canvas/composition.qml#M1 13 | 14 | The example below will demonstrate all composition modes by iterating over them and combining a rectangle and a circle. You can find the resulting output below the source code. 15 | 16 | <<< @/docs/ch08-canvas/src/canvas/compositeoperation.qml#M1 17 | 18 | ![image](./assets/composite-operations.png) 19 | -------------------------------------------------------------------------------- /docs/ch08-canvas/convenience-api.md: -------------------------------------------------------------------------------- 1 | # Convenience API 2 | 3 | For operations on rectangles, a convenience API is provided which draws directly and does need a stroke or fill call. 4 | 5 | <<< @/docs/ch08-canvas/src/canvas/convenient.qml#M1 6 | 7 | ![image](./assets/convenient.png) 8 | 9 | ::: tip 10 | The stroke area extends half of the line width on both sides of the path. A 4 px lineWidth will draw 2 px outside the path and 2 px inside. 11 | ::: 12 | 13 | -------------------------------------------------------------------------------- /docs/ch08-canvas/images.md: -------------------------------------------------------------------------------- 1 | # Images 2 | 3 | The QML canvas supports image drawing from several sources. To use an image inside the canvas the image needs to be loaded first. We use the `Component.onCompleted` handler to load the image in our example below. 4 | 5 | <<< @/docs/ch08-canvas/src/canvas/image.qml#M1 6 | 7 | The left shows our ball image painted at the top-left position of 10x10. The right image shows the ball with a clipping path applied. Images and any other path can be clipped using another path. The clipping is applied by defining a path and calling the `clip()` function. All following drawing operations will now be clipped by this path. The clipping is disabled again by restoring the previous state or by setting the clip region to the whole canvas. 8 | 9 | ![image](./assets/canvas_image.png) 10 | -------------------------------------------------------------------------------- /docs/ch08-canvas/src/canvas/assets/ball.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch08-canvas/src/canvas/assets/ball.png -------------------------------------------------------------------------------- /docs/ch08-canvas/src/canvas/canvas.qmlproject: -------------------------------------------------------------------------------- 1 | /* File generated by Qt Creator, version 2.4.1 */ 2 | 3 | import QmlProject 1.1 4 | 5 | Project { 6 | 7 | /* Include .qml, .js, and image files from current directory and subdirectories */ 8 | QmlFiles { 9 | directory: "." 10 | } 11 | JavaScriptFiles { 12 | directory: "." 13 | } 14 | ImageFiles { 15 | directory: "." 16 | } 17 | /* List of plugin directories passed to QML runtime */ 18 | // importPaths: [ "../exampleplugin" ] 19 | } 20 | -------------------------------------------------------------------------------- /docs/ch09-shapes/assets/automatic/animation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch09-shapes/assets/automatic/animation.png -------------------------------------------------------------------------------- /docs/ch09-shapes/assets/automatic/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch09-shapes/assets/automatic/basic.png -------------------------------------------------------------------------------- /docs/ch09-shapes/assets/automatic/fillmode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch09-shapes/assets/automatic/fillmode.png -------------------------------------------------------------------------------- /docs/ch09-shapes/assets/automatic/gradients.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch09-shapes/assets/automatic/gradients.png -------------------------------------------------------------------------------- /docs/ch09-shapes/assets/automatic/paths.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch09-shapes/assets/automatic/paths.png -------------------------------------------------------------------------------- /docs/ch09-shapes/shapes.md: -------------------------------------------------------------------------------- 1 | # Shapes 2 | 3 | Until now we've used the ``Rectangle`` element and controls, but for free form shapes, we have to rely on images. Using the Qt Quick Shapes module it is possible to create truly free form shapes. This makes it possible to create visualizations directly from QML in a flexible manner. 4 | 5 | In this chapter we will look at how to use shapes, the various path elements available, how shapes can be filled in different ways, and how to combine shapes with the power of QML to smoothly animate shapes. 6 | -------------------------------------------------------------------------------- /docs/ch09-shapes/summary.md: -------------------------------------------------------------------------------- 1 | # Summary 2 | 3 | In this chapter we've a look at what the Qt Quick Shapes module has to offer. Using it we can create arbitrary shapes directly in QML, and leverage the property binding system of QML to create dynamic shapes. We've also had a look at the various path segments that can be used to build shapes from elements such as lines, arcs, and various curves. Finally, we've explored the filling options, where gradients can be used to create exciting visual effects from a path. 4 | -------------------------------------------------------------------------------- /docs/ch10-effects/assets/age.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/age.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/angledirection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/angledirection.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/angledirection2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/angledirection2.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/attractor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/attractor.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/colorvariation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/colorvariation.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/curtain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/curtain.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/curtain_diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/curtain_diagram.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/curve.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/curve.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/defaultshader.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/defaultshader.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/directionquest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/directionquest.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/fastblur.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/fastblur.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/firework_final.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/firework_final.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/firework_rockets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/firework_rockets.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/firework_teaser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/firework_teaser.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/friction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/friction.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/geniebending.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/geniebending.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/genieeffect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/genieeffect.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/geniehalfside.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/geniehalfside.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/genieminimize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/genieminimize.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/geniescene.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/geniescene.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/geniesimplebending.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/geniesimplebending.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/geniesmoothbending.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/geniesmoothbending.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/graphicseffectstestbed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/graphicseffectstestbed.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/gravity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/gravity.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/itemparticle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/itemparticle.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/openglpipeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/openglpipeline.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/particle_directions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/particle_directions.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/particleparameters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/particleparameters.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/particlesystem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/particlesystem.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/pointdirection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/pointdirection.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/redlense1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/redlense1.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/redlense2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/redlense2.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/redlense3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/redlense3.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/redlense4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/redlense4.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/redlense5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/redlense5.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/rotationvariation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/rotationvariation.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/simpleparticles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/simpleparticles.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/simpleparticles2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/simpleparticles2.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/targetdirection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/targetdirection.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/turbulence.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/turbulence.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/wander.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/wander.png -------------------------------------------------------------------------------- /docs/ch10-effects/assets/wave.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/assets/wave.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/effects/assets/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/effects/assets/background.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/effects/assets/background@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/effects/assets/background@2x.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/effects/assets/bug.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/effects/assets/bug.jpg -------------------------------------------------------------------------------- /docs/ch10-effects/src/effects/assets/butterfly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/effects/assets/butterfly.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/effects/assets/coastline.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/effects/assets/coastline.jpg -------------------------------------------------------------------------------- /docs/ch10-effects/src/effects/assets/fabric.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/effects/assets/fabric.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/effects/assets/fabric@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/effects/assets/fabric@2x.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/effects/assets/lighthouse.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/effects/assets/lighthouse.jpg -------------------------------------------------------------------------------- /docs/ch10-effects/src/effects/assets/longroad.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/effects/assets/longroad.jpg -------------------------------------------------------------------------------- /docs/ch10-effects/src/effects/assets/tulips.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/effects/assets/tulips.jpg -------------------------------------------------------------------------------- /docs/ch10-effects/src/particles/assets/background medium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/particles/assets/background medium.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/particles/assets/background medium@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/particles/assets/background medium@2x.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/particles/assets/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/particles/assets/background.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/particles/assets/background@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/particles/assets/background@2x.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/particles/assets/box_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/particles/assets/box_blue.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/particles/assets/box_blue@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/particles/assets/box_blue@2x.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/particles/assets/box_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/particles/assets/box_green.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/particles/assets/box_green@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/particles/assets/box_green@2x.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/particles/assets/box_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/particles/assets/box_red.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/particles/assets/box_red@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/particles/assets/box_red@2x.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/particles/assets/circle_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/particles/assets/circle_blue.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/particles/assets/circle_blue@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/particles/assets/circle_blue@2x.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/particles/assets/circle_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/particles/assets/circle_green.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/particles/assets/circle_green@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/particles/assets/circle_green@2x.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/particles/assets/circle_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/particles/assets/circle_red.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/particles/assets/circle_red@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/particles/assets/circle_red@2x.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/particles/assets/particle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/particles/assets/particle.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/particles/assets/rect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/particles/assets/rect.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/particles/assets/rocket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/particles/assets/rocket.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/particles/assets/rocket@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/particles/assets/rocket@2x.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/particles/assets/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/particles/assets/star.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/particles/assets/triangle_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/particles/assets/triangle_blue.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/particles/assets/triangle_blue@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/particles/assets/triangle_blue@2x.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/particles/assets/triangle_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/particles/assets/triangle_green.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/particles/assets/triangle_green@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/particles/assets/triangle_green@2x.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/particles/assets/triangle_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/particles/assets/triangle_red.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/particles/assets/triangle_red@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/particles/assets/triangle_red@2x.png -------------------------------------------------------------------------------- /docs/ch10-effects/src/particles/assets/ufo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch10-effects/src/particles/assets/ufo.png -------------------------------------------------------------------------------- /docs/ch11-multimedia/assets/camera-ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch11-multimedia/assets/camera-ui.png -------------------------------------------------------------------------------- /docs/ch11-multimedia/multimedia.md: -------------------------------------------------------------------------------- 1 | # Multimedia 2 | 3 | The multimedia elements in the Qt Multimedia makes it possible to playback and record media such as sound, video or pictures. Decoding and encoding are handled through platform-specific backends. For instance, the popular GStreamer framework is used on Linux, WMF is used on Windows, AVFramework on OS X and iOS and the Android multimedia APIs are used on Android. 4 | 5 | The multimedia elements are not a part of the Qt Quick core API. Instead, they are provided through a separate API made available by importing Qt Multimedia as shown below: 6 | 7 | ```qml 8 | import QtMultimedia 9 | ``` 10 | 11 | -------------------------------------------------------------------------------- /docs/ch11-multimedia/src/playback-controls/sample-5s.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch11-multimedia/src/playback-controls/sample-5s.mp4 -------------------------------------------------------------------------------- /docs/ch11-multimedia/src/sound-effects/beep.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch11-multimedia/src/sound-effects/beep.wav -------------------------------------------------------------------------------- /docs/ch11-multimedia/src/sound-effects/swosh.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch11-multimedia/src/sound-effects/swosh.wav -------------------------------------------------------------------------------- /docs/ch11-multimedia/summary.md: -------------------------------------------------------------------------------- 1 | # Summary 2 | 3 | The media API provided by Qt provides mechanisms for playing and capturing video and audio. Through the `VideoOutput` element, video streams can be rendered in the user interface. Through the `MediaPlayer` element, most playback can be handled, even though the `SoundEffect` can be used for low-latency sounds. For capturing, or recording camera streams, a combination of `CaptureSession` and `Camera` elements can be used. 4 | -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/assets/asset-first-input.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/assets/asset-first-input.png -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/assets/asset-second-input.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/assets/asset-second-input.png -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/assets/balsamui-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/assets/balsamui-1.png -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/assets/balsamui-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/assets/balsamui-2.png -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/assets/basicscene.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/assets/basicscene.png -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/assets/blender-export-collada.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/assets/blender-export-collada.png -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/assets/blender-export-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/assets/blender-export-menu.png -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/assets/blender-monkey-with-bones.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/assets/blender-monkey-with-bones.png -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/assets/blender-monkey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/assets/blender-monkey.png -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/assets/default-material.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/assets/default-material.png -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/assets/light_directional.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/assets/light_directional.png -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/assets/light_point.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/assets/light_point.png -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/assets/light_spot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/assets/light_spot.png -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/assets/materials-no-skybox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/assets/materials-no-skybox.png -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/assets/materials.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/assets/materials.png -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/assets/meshes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/assets/meshes.png -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/assets/mix-2d-and-3d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/assets/mix-2d-and-3d.png -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/assets/monkey.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/assets/monkey.gif -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/assets/principled-material.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/assets/principled-material.png -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/assets/rotation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/assets/rotation.png -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/src/animations/blender/monkey-with-bones.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/src/animations/blender/monkey-with-bones.blend -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/src/animations/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | QGuiApplication app(argc, argv); 8 | 9 | QQmlApplicationEngine engine; 10 | const QUrl url(u"qrc:/animations/main.qml"_qs); 11 | QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, 12 | &app, [url](QObject *obj, const QUrl &objUrl) { 13 | if (!obj && url == objUrl) 14 | QCoreApplication::exit(-1); 15 | }, Qt::QueuedConnection); 16 | engine.load(url); 17 | 18 | return app.exec(); 19 | } 20 | -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/src/animations/meshes/suzanne.mesh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/src/animations/meshes/suzanne.mesh -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/src/basicasset/blender/monkey.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/src/basicasset/blender/monkey.blend -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/src/basicasset/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | QGuiApplication app(argc, argv); 8 | 9 | QQmlApplicationEngine engine; 10 | const QUrl url(u"qrc:/basicasset/main.qml"_qs); 11 | QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, 12 | &app, [url](QObject *obj, const QUrl &objUrl) { 13 | if (!obj && url == objUrl) 14 | QCoreApplication::exit(-1); 15 | }, Qt::QueuedConnection); 16 | engine.load(url); 17 | 18 | return app.exec(); 19 | } 20 | -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/src/basicasset/meshes/suzanne.mesh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/src/basicasset/meshes/suzanne.mesh -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/src/basicmaterials/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | QGuiApplication app(argc, argv); 8 | 9 | QQmlApplicationEngine engine; 10 | const QUrl url(u"qrc:/basicmaterials/main.qml"_qs); 11 | QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, 12 | &app, [url](QObject *obj, const QUrl &objUrl) { 13 | if (!obj && url == objUrl) 14 | QCoreApplication::exit(-1); 15 | }, Qt::QueuedConnection); 16 | engine.load(url); 17 | 18 | return app.exec(); 19 | } 20 | -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/src/basicmaterials/maps/skybox.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/src/basicmaterials/maps/skybox.jpg -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/src/basicmaterials/meshes/suzanne.mesh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/src/basicmaterials/meshes/suzanne.mesh -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/src/basicscene/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | QGuiApplication app(argc, argv); 8 | 9 | QQmlApplicationEngine engine; 10 | const QUrl url(u"qrc:/basicscene/main.qml"_qs); 11 | QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, 12 | &app, [url](QObject *obj, const QUrl &objUrl) { 13 | if (!obj && url == objUrl) 14 | QCoreApplication::exit(-1); 15 | }, Qt::QueuedConnection); 16 | engine.load(url); 17 | 18 | return app.exec(); 19 | } 20 | -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/src/defaultmaterial/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | QGuiApplication app(argc, argv); 8 | 9 | QQmlApplicationEngine engine; 10 | const QUrl url(u"qrc:/defaultmaterial/main.qml"_qs); 11 | QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, 12 | &app, [url](QObject *obj, const QUrl &objUrl) { 13 | if (!obj && url == objUrl) 14 | QCoreApplication::exit(-1); 15 | }, Qt::QueuedConnection); 16 | engine.load(url); 17 | 18 | return app.exec(); 19 | } 20 | -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/src/defaultmaterial/maps/skybox.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/src/defaultmaterial/maps/skybox.jpg -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/src/defaultmaterial/meshes/suzanne.mesh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/src/defaultmaterial/meshes/suzanne.mesh -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/src/lights/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | QGuiApplication app(argc, argv); 8 | 9 | QQmlApplicationEngine engine; 10 | const QUrl url(u"qrc:/lights/main.qml"_qs); 11 | QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, 12 | &app, [url](QObject *obj, const QUrl &objUrl) { 13 | if (!obj && url == objUrl) 14 | QCoreApplication::exit(-1); 15 | }, Qt::QueuedConnection); 16 | engine.load(url); 17 | 18 | return app.exec(); 19 | } 20 | -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/src/meshes/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | QGuiApplication app(argc, argv); 8 | 9 | QQmlApplicationEngine engine; 10 | const QUrl url(u"qrc:/meshes/main.qml"_qs); 11 | QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, 12 | &app, [url](QObject *obj, const QUrl &objUrl) { 13 | if (!obj && url == objUrl) 14 | QCoreApplication::exit(-1); 15 | }, Qt::QueuedConnection); 16 | engine.load(url); 17 | 18 | return app.exec(); 19 | } 20 | -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/src/mix2d3d/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | QGuiApplication app(argc, argv); 8 | 9 | QQmlApplicationEngine engine; 10 | const QUrl url(u"qrc:/mix2d3d/main.qml"_qs); 11 | QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, 12 | &app, [url](QObject *obj, const QUrl &objUrl) { 13 | if (!obj && url == objUrl) 14 | QCoreApplication::exit(-1); 15 | }, Qt::QueuedConnection); 16 | engine.load(url); 17 | 18 | return app.exec(); 19 | } 20 | -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/src/mix2d3d/meshes/suzanne.mesh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/src/mix2d3d/meshes/suzanne.mesh -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/src/principledmaterial/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | QGuiApplication app(argc, argv); 8 | 9 | QQmlApplicationEngine engine; 10 | const QUrl url(u"qrc:/principledmaterial/main.qml"_qs); 11 | QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, 12 | &app, [url](QObject *obj, const QUrl &objUrl) { 13 | if (!obj && url == objUrl) 14 | QCoreApplication::exit(-1); 15 | }, Qt::QueuedConnection); 16 | engine.load(url); 17 | 18 | return app.exec(); 19 | } 20 | -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/src/principledmaterial/maps/skybox.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/src/principledmaterial/maps/skybox.jpg -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/src/principledmaterial/meshes/suzanne.mesh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch12-qtquick3d/src/principledmaterial/meshes/suzanne.mesh -------------------------------------------------------------------------------- /docs/ch12-qtquick3d/src/translations/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | QGuiApplication app(argc, argv); 8 | 9 | QQmlApplicationEngine engine; 10 | const QUrl url(u"qrc:/translations/main.qml"_qs); 11 | QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, 12 | &app, [url](QObject *obj, const QUrl &objUrl) { 13 | if (!obj && url == objUrl) 14 | QCoreApplication::exit(-1); 15 | }, Qt::QueuedConnection); 16 | engine.load(url); 17 | 18 | return app.exec(); 19 | } 20 | -------------------------------------------------------------------------------- /docs/ch13-networking/images/oauth-spotify-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch13-networking/images/oauth-spotify-app.png -------------------------------------------------------------------------------- /docs/ch13-networking/images/oauth-spotify-dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch13-networking/images/oauth-spotify-dashboard.png -------------------------------------------------------------------------------- /docs/ch13-networking/images/oauth-spotify-result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch13-networking/images/oauth-spotify-result.png -------------------------------------------------------------------------------- /docs/ch13-networking/images/ws_client.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch13-networking/images/ws_client.png -------------------------------------------------------------------------------- /docs/ch13-networking/images/ws_echo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch13-networking/images/ws_echo.png -------------------------------------------------------------------------------- /docs/ch13-networking/src/http_v1/Button.qml: -------------------------------------------------------------------------------- 1 | // M1>> 2 | // Button.qml 3 | 4 | import QtQuick 5 | 6 | Rectangle { 7 | width: 90 8 | height: 30 9 | color: '#ccc' 10 | border.color: '#666' 11 | property string text 12 | signal clicked() 13 | Text { 14 | anchors.centerIn: parent 15 | text: parent.text 16 | } 17 | MouseArea { 18 | anchors.fill: parent 19 | onClicked: parent.clicked() 20 | } 21 | } 22 | // <> 2 | // main.qml 3 | import QtQuick 4 | 5 | Rectangle { 6 | width: 320 7 | height: 320 8 | color: '#ff0000' 9 | } 10 | // <> 2 | // main2.qml 3 | import QtQuick 4 | import "http://localhost:8080" as Remote 5 | 6 | Rectangle { 7 | width: 320 8 | height: 320 9 | color: '#ff0000' 10 | 11 | Remote.Button { 12 | anchors.centerIn: parent 13 | text: 'Click Me' 14 | onClicked: Qt.quit() 15 | } 16 | } 17 | // < 2 | 3 | 4 | red 5 | #f00 6 | 7 | 8 | green 9 | #0f0 10 | 11 | 12 | blue 13 | #00f 14 | 15 | 16 | cyan 17 | #0ff 18 | 19 | 20 | magenta 21 | #f0f 22 | 23 | 24 | 25 | yellow 26 | #ff0 27 | 28 | 29 | black 30 | #000 31 | 32 | 33 | -------------------------------------------------------------------------------- /docs/ch13-networking/src/localfiles/localfiles.qmlproject: -------------------------------------------------------------------------------- 1 | /* File generated by Qt Creator, version 2.7.0 */ 2 | 3 | import QmlProject 1.1 4 | 5 | Project { 6 | mainFile: "localfiles.qml" 7 | 8 | /* Include .qml, .js, and image files from current directory and subdirectories */ 9 | QmlFiles { 10 | directory: "." 11 | } 12 | JavaScriptFiles { 13 | directory: "." 14 | } 15 | ImageFiles { 16 | directory: "." 17 | } 18 | /* List of plugin directories passed to QML runtime */ 19 | // importPaths: [ "../exampleplugin" ] 20 | } 21 | -------------------------------------------------------------------------------- /docs/ch13-networking/src/oauth/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include "spotifyapi.h" 5 | 6 | int main(int argc, char *argv[]) { 7 | QGuiApplication app(argc, argv); 8 | 9 | QQmlApplicationEngine engine; 10 | const QUrl url(QStringLiteral("qrc:/Spotify/main.qml")); 11 | QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, &app, [url](QObject *obj, const QUrl &objUrl) { 12 | if (!obj && url == objUrl) { 13 | QCoreApplication::exit(-1); 14 | } 15 | }, Qt::QueuedConnection); 16 | 17 | engine.load(url); 18 | 19 | return app.exec(); 20 | } 21 | -------------------------------------------------------------------------------- /docs/ch13-networking/src/requests/http/colors.json: -------------------------------------------------------------------------------- 1 | ] 2 | { "color": "red", "value": "#f00" }, 3 | { "color": "green", "value": "#0f0" }, 4 | { "color": "blue", "value": "#00f" }, 5 | { "color": "cyan", "value": "#0ff" }, 6 | { "color": "magenta", "value": "#f0f" }, 7 | { "color": "yellow", "value": "#ff0" }, 8 | { "color": "black", "value": "#000" } 9 | ] 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /docs/ch13-networking/src/requests/http/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /docs/ch13-networking/src/rest/rest.qmlproject: -------------------------------------------------------------------------------- 1 | /* File generated by Qt Creator */ 2 | 3 | import QmlProject 1.1 4 | 5 | Project { 6 | mainFile: "rest.qml" 7 | 8 | /* Include .qml, .js, and image files from current directory and subdirectories */ 9 | QmlFiles { 10 | directory: "." 11 | } 12 | JavaScriptFiles { 13 | directory: "." 14 | } 15 | ImageFiles { 16 | directory: "." 17 | } 18 | /* List of plugin directories passed to QML runtime */ 19 | // importPaths: [ "../exampleplugin" ] 20 | } 21 | -------------------------------------------------------------------------------- /docs/ch13-networking/src/restservice/colors.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "name": "red", "value": "#f00" }, 3 | { "name": "green", "value": "#0f0" }, 4 | { "name": "blue", "value": "#00f" }, 5 | { "name": "cyan", "value": "#0ff" }, 6 | { "name": "magenta", "value": "#f0f" }, 7 | { "name": "yellow", "value": "#ff0" } 8 | ] 9 | -------------------------------------------------------------------------------- /docs/ch13-networking/src/serve-qml-networked-components/remote/qmldir: -------------------------------------------------------------------------------- 1 | # qmldir 2 | Button 1.0 Button.qml 3 | -------------------------------------------------------------------------------- /docs/ch13-networking/src/ws/ws_client/test.qml: -------------------------------------------------------------------------------- 1 | import QtWebSockets 2 | 3 | WebSocket { 4 | id: socket 5 | } 6 | -------------------------------------------------------------------------------- /docs/ch13-networking/src/ws/ws_client/ws_client.qmlproject: -------------------------------------------------------------------------------- 1 | /* File generated by Qt Creator */ 2 | 3 | import QmlProject 1.1 4 | 5 | Project { 6 | mainFile: "ws_client.qml" 7 | 8 | /* Include .qml, .js, and image files from current directory and subdirectories */ 9 | QmlFiles { 10 | directory: "." 11 | } 12 | JavaScriptFiles { 13 | directory: "." 14 | } 15 | ImageFiles { 16 | directory: "." 17 | } 18 | /* List of plugin directories passed to QML runtime */ 19 | // importPaths: [ "../exampleplugin" ] 20 | } 21 | -------------------------------------------------------------------------------- /docs/ch13-networking/src/wsecho/wsecho.qmlproject: -------------------------------------------------------------------------------- 1 | /* File generated by Qt Creator */ 2 | 3 | import QmlProject 1.1 4 | 5 | Project { 6 | mainFile: "wsecho.qml" 7 | 8 | /* Include .qml, .js, and image files from current directory and subdirectories */ 9 | QmlFiles { 10 | directory: "." 11 | } 12 | JavaScriptFiles { 13 | directory: "." 14 | } 15 | ImageFiles { 16 | directory: "." 17 | } 18 | /* List of plugin directories passed to QML runtime */ 19 | // importPaths: [ "../exampleplugin" ] 20 | } 21 | -------------------------------------------------------------------------------- /docs/ch13-networking/summary.md: -------------------------------------------------------------------------------- 1 | # Summary 2 | 3 | This concludes our chapter about QML networking. Please bear in mind Qt has on the native side a much richer networking API as on the QML side currently. But the idea of the chapter is to push the boundaries of QML networking and how to integrate with cloud-based services. 4 | -------------------------------------------------------------------------------- /docs/ch14-storage/images/crazy_rect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch14-storage/images/crazy_rect.png -------------------------------------------------------------------------------- /docs/ch14-storage/src/sqloffline/csvtosql.py: -------------------------------------------------------------------------------- 1 | import csv 2 | import sqlite3 3 | 4 | db = sqlite3.connect('cities.db') 5 | db.execute('''DROP TABLE IF EXISTS cities''') 6 | db.execute('''CREATE TABLE cities (city text, country text, population text, area text, flag text)''') 7 | db.text_factory = str 8 | fp = file("cities.csv") 9 | r = csv.reader(fp, delimiter=';') 10 | for row in r: 11 | db.execute('INSERT INTO cities VALUES (?, ?, ?, ?, ?)', row) 12 | db.commit() 13 | db.close() 14 | -------------------------------------------------------------------------------- /docs/ch15-dynamicqml/assets/automatic/connections.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch15-dynamicqml/assets/automatic/connections.png -------------------------------------------------------------------------------- /docs/ch15-dynamicqml/assets/automatic/empty.dir: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch15-dynamicqml/assets/automatic/empty.dir -------------------------------------------------------------------------------- /docs/ch15-dynamicqml/assets/automatic/loader-analog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch15-dynamicqml/assets/automatic/loader-analog.png -------------------------------------------------------------------------------- /docs/ch15-dynamicqml/assets/automatic/loader-digital.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch15-dynamicqml/assets/automatic/loader-digital.png -------------------------------------------------------------------------------- /docs/ch15-dynamicqml/dynamic-qml.md: -------------------------------------------------------------------------------- 1 | # Dynamic QML 2 | 3 | Until now, we have treated QML as a tool for constructing a static set of scenes and navigating between them. Depending on various states and logic rules, a living and dynamic user interface is constructed. By working with QML and JavaScript in a more dynamic manner, the flexibility and possibilities expand even further. Components can be loaded and instantiated at run-time, elements can be destroyed. Dynamically created user interfaces can be saved to disk and later restored. 4 | 5 | -------------------------------------------------------------------------------- /docs/ch15-dynamicqml/src/dynamic-scene/rocket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch15-dynamicqml/src/dynamic-scene/rocket.png -------------------------------------------------------------------------------- /docs/ch15-dynamicqml/src/dynamic-scene/rocket@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch15-dynamicqml/src/dynamic-scene/rocket@2x.png -------------------------------------------------------------------------------- /docs/ch15-dynamicqml/src/dynamic-scene/ufo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch15-dynamicqml/src/dynamic-scene/ufo.png -------------------------------------------------------------------------------- /docs/ch15-dynamicqml/src/dynamic-scene/ufo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch15-dynamicqml/src/dynamic-scene/ufo@2x.png -------------------------------------------------------------------------------- /docs/ch15-dynamicqml/src/load-component/create-component.js: -------------------------------------------------------------------------------- 1 | // #region M1 2 | var component; 3 | 4 | function createImageObject() { 5 | component = Qt.createComponent("dynamic-image.qml"); 6 | if (component.status === Component.Ready || component.status === Component.Error) { 7 | finishCreation(); 8 | } else { 9 | component.statusChanged.connect(finishCreation); 10 | } 11 | } 12 | 13 | function finishCreation() { 14 | if (component.status === Component.Ready) { 15 | var image = component.createObject(root, {"x": 100, "y": 100}); 16 | if (image === null) { 17 | console.log("Error creating image"); 18 | } 19 | } else if (component.status === Component.Error) { 20 | console.log("Error loading component:", component.errorString()); 21 | } 22 | } 23 | 24 | // #endregion M1 25 | -------------------------------------------------------------------------------- /docs/ch15-dynamicqml/src/load-component/image1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch15-dynamicqml/src/load-component/image1.png -------------------------------------------------------------------------------- /docs/ch15-dynamicqml/src/load-component/image2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch15-dynamicqml/src/load-component/image2.png -------------------------------------------------------------------------------- /docs/ch16-javascript/assets/jsconsole.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch16-javascript/assets/jsconsole.png -------------------------------------------------------------------------------- /docs/ch16-javascript/src/JSConsole/JSConsole.qmlproject: -------------------------------------------------------------------------------- 1 | /* File generated by Qt Creator, version 2.7.0 */ 2 | 3 | import QmlProject 1.1 4 | 5 | Project { 6 | mainFile: "JSConsole.qml" 7 | 8 | /* Include .qml, .js, and image files from current directory and subdirectories */ 9 | QmlFiles { 10 | directory: "." 11 | } 12 | JavaScriptFiles { 13 | directory: "." 14 | } 15 | ImageFiles { 16 | directory: "." 17 | } 18 | /* List of plugin directories passed to QML runtime */ 19 | // importPaths: [ "../exampleplugin" ] 20 | } 21 | -------------------------------------------------------------------------------- /docs/ch17-qtcpp/assets/cityui.graffle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/assets/cityui.graffle -------------------------------------------------------------------------------- /docs/ch17-qtcpp/images/modelview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/images/modelview.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/images/storecontent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/images/storecontent.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/images/yourapplication.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/images/yourapplication.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.16.0) 2 | 3 | add_subdirectory(coreapp) 4 | add_subdirectory(modelview) 5 | add_subdirectory(qtfoundation) 6 | add_subdirectory(uiapp) 7 | add_subdirectory(valuemodel) 8 | -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/coreapp/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.16.0) 2 | 3 | project(coreapp VERSION 1.0.0 LANGUAGES CXX) 4 | 5 | set(CMAKE_CXX_STANDARD 17) 6 | set(CMAKE_CXX_STANDARD_REQUIRED ON) 7 | 8 | set(CMAKE_AUTOMOC ON) 9 | set(CMAKE_AUTORCC ON) 10 | set(CMAKE_AUTOUIC ON) 11 | 12 | find_package(Qt6 COMPONENTS Gui REQUIRED) 13 | 14 | add_executable(coreapp 15 | main.cpp 16 | ) 17 | 18 | target_link_libraries(coreapp PRIVATE Qt6::Gui) 19 | -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/modelview/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.16.0) 2 | 3 | project(modelview VERSION 1.0.0 LANGUAGES CXX) 4 | 5 | set(CMAKE_CXX_STANDARD 17) 6 | set(CMAKE_CXX_STANDARD_REQUIRED ON) 7 | 8 | set(CMAKE_AUTOMOC ON) 9 | set(CMAKE_AUTORCC ON) 10 | set(CMAKE_AUTOUIC ON) 11 | 12 | find_package(Qt6 COMPONENTS Quick REQUIRED) 13 | find_package(Qt6 COMPONENTS QuickControls2 REQUIRED) 14 | 15 | add_executable(modelview 16 | main.cpp 17 | dataentrymodel.cpp 18 | dataentrymodel.h 19 | roleentrymodel.cpp 20 | roleentrymodel.h 21 | dynamicentrymodel.cpp 22 | dynamicentrymodel.h 23 | qml.qrc 24 | ) 25 | 26 | target_link_libraries(modelview PRIVATE Qt6::Quick Qt6::QuickControls2) 27 | -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/modelview/dataentrymodel.h: -------------------------------------------------------------------------------- 1 | #ifndef DATAENTRYMODEL_H 2 | #define DATAENTRYMODEL_H 3 | 4 | #include 5 | #include 6 | 7 | class DataEntryModel : public QAbstractListModel 8 | { 9 | Q_OBJECT 10 | public: 11 | explicit DataEntryModel(QObject *parent = 0); 12 | ~DataEntryModel(); 13 | 14 | public: // QAbstractItemModel interface 15 | virtual int rowCount(const QModelIndex &parent) const; 16 | virtual QVariant data(const QModelIndex &index, int role) const; 17 | private: 18 | QList m_data; 19 | }; 20 | 21 | #endif // DATAENTRYMODEL_H 22 | -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/modelview/deployment.pri: -------------------------------------------------------------------------------- 1 | android-no-sdk { 2 | target.path = /data/user/qt 3 | export(target.path) 4 | INSTALLS += target 5 | } else:android { 6 | x86 { 7 | target.path = /libs/x86 8 | } else: armeabi-v7a { 9 | target.path = /libs/armeabi-v7a 10 | } else { 11 | target.path = /libs/armeabi 12 | } 13 | export(target.path) 14 | INSTALLS += target 15 | } else:unix { 16 | isEmpty(target.path) { 17 | qnx { 18 | target.path = /tmp/$${TARGET}/bin 19 | } else { 20 | target.path = /opt/$${TARGET}/bin 21 | } 22 | export(target.path) 23 | } 24 | INSTALLS += target 25 | } 26 | 27 | export(INSTALLS) 28 | -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/modelview/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include "dataentrymodel.h" 5 | #include "roleentrymodel.h" 6 | #include "dynamicentrymodel.h" 7 | 8 | int main(int argc, char *argv[]) 9 | { 10 | QGuiApplication app(argc, argv); 11 | 12 | // register the type DataEntryModel 13 | // under the url "org.example" in version 1.0 14 | // under the name "DataEntryModel" 15 | qmlRegisterType("org.example", 1, 0, "DataEntryModel"); 16 | qmlRegisterType("org.example", 1, 0, "RoleEntryModel"); 17 | qmlRegisterType("org.example", 1, 0, "DynamicEntryModel"); 18 | QQmlApplicationEngine engine; 19 | engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); 20 | 21 | return app.exec(); 22 | } 23 | -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/modelview/qml.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | main.qml 4 | ListDelegate.qml 5 | ListHighlight.qml 6 | Background.qml 7 | remove.png 8 | TextEntry.qml 9 | 10 | 11 | -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/modelview/remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/modelview/remove.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/qtfoundation/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.16.0) 2 | 3 | project(foundation_tests VERSION 1.0.0 LANGUAGES CXX) 4 | 5 | set(CMAKE_CXX_STANDARD 17) 6 | set(CMAKE_CXX_STANDARD_REQUIRED ON) 7 | 8 | set(CMAKE_AUTOMOC ON) 9 | set(CMAKE_AUTORCC ON) 10 | set(CMAKE_AUTOUIC ON) 11 | 12 | find_package(Qt6 COMPONENTS Core REQUIRED) 13 | find_package(Qt6 COMPONENTS Test REQUIRED) 14 | 15 | add_executable(foundation_tests 16 | tst_foundation.cpp 17 | ) 18 | 19 | target_link_libraries(foundation_tests PRIVATE Qt6::Core Qt6::Test) 20 | -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/remove.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/uiapp/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.16.0) 2 | 3 | project(uiapp VERSION 1.0.0 LANGUAGES CXX) 4 | 5 | set(CMAKE_CXX_STANDARD 17) 6 | set(CMAKE_CXX_STANDARD_REQUIRED ON) 7 | 8 | set(CMAKE_AUTOMOC ON) 9 | set(CMAKE_AUTORCC ON) 10 | set(CMAKE_AUTOUIC ON) 11 | 12 | find_package(Qt6 COMPONENTS Gui REQUIRED) 13 | find_package(Qt6 COMPONENTS Widgets REQUIRED) 14 | 15 | add_executable(uiapp 16 | main.cpp 17 | mainwindow.cpp 18 | ) 19 | 20 | target_link_libraries(uiapp PRIVATE Qt6::Gui Qt6::Widgets) 21 | -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/uiapp/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "mainwindow.h" 5 | 6 | 7 | int main(int argc, char** argv) 8 | { 9 | QApplication app(argc, argv); 10 | 11 | MainWindow win; 12 | win.resize(320, 240); 13 | win.setVisible(true); 14 | 15 | return app.exec(); 16 | } 17 | -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/uiapp/mainwindow.cpp: -------------------------------------------------------------------------------- 1 | #include "mainwindow.h" 2 | 3 | MainWindow::MainWindow(QWidget *parent) 4 | : QMainWindow(parent) 5 | { 6 | m_button = new QPushButton("Store Content", this); 7 | 8 | setCentralWidget(m_button); 9 | connect(m_button, &QPushButton::clicked, this, &MainWindow::storeContent); 10 | } 11 | 12 | MainWindow::~MainWindow() 13 | { 14 | 15 | } 16 | 17 | void MainWindow::storeContent() 18 | { 19 | qDebug() << "... store content"; 20 | QString message("Hello World!"); 21 | QFile file(QDir::home().absoluteFilePath("out.txt")); 22 | if(!file.open(QIODevice::WriteOnly)) { 23 | qWarning() << "Can not open file with write access"; 24 | return; 25 | } 26 | QTextStream stream(&file); 27 | stream << message; 28 | } 29 | 30 | -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/uiapp/mainwindow.h: -------------------------------------------------------------------------------- 1 | #ifndef MAINWINDOW_H 2 | #define MAINWINDOW_H 3 | 4 | #include 5 | 6 | class MainWindow : public QMainWindow 7 | { 8 | public: 9 | MainWindow(QWidget* parent=0); 10 | ~MainWindow(); 11 | public slots: 12 | void storeContent(); 13 | private: 14 | QPushButton *m_button; 15 | }; 16 | 17 | #endif // MAINWINDOW_H 18 | -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.16.0) 2 | 3 | project(valuemodel VERSION 1.0.0 LANGUAGES CXX) 4 | 5 | set(CMAKE_CXX_STANDARD 17) 6 | set(CMAKE_CXX_STANDARD_REQUIRED ON) 7 | 8 | set(CMAKE_AUTOMOC ON) 9 | set(CMAKE_AUTORCC ON) 10 | set(CMAKE_AUTOUIC ON) 11 | 12 | find_package(Qt6 COMPONENTS Quick REQUIRED) 13 | find_package(Qt6 COMPONENTS QuickControls2 REQUIRED) 14 | 15 | add_executable(valuemodel 16 | main.cpp 17 | adaptivemodel.cpp 18 | adaptivemodel.h 19 | valuemodel.cpp 20 | valuemodel.h 21 | qml.qrc 22 | ) 23 | 24 | target_link_libraries(valuemodel PRIVATE Qt6::Quick Qt6::QuickControls2) 25 | -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/data/convert.py: -------------------------------------------------------------------------------- 1 | import csv 2 | import json 3 | 4 | fp = file('cities.csv', 'r') 5 | reader = csv.DictReader(fp, delimiter=';') 6 | data = [] 7 | for row in reader: 8 | data.append(row) 9 | 10 | s = json.dumps(data, indent=4, sort_keys = True) 11 | 12 | fp = file('cities.json', 'w') 13 | fp.write(s) 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/deployment.pri: -------------------------------------------------------------------------------- 1 | android-no-sdk { 2 | target.path = /data/user/qt 3 | export(target.path) 4 | INSTALLS += target 5 | } else:android { 6 | x86 { 7 | target.path = /libs/x86 8 | } else: armeabi-v7a { 9 | target.path = /libs/armeabi-v7a 10 | } else { 11 | target.path = /libs/armeabi 12 | } 13 | export(target.path) 14 | INSTALLS += target 15 | } else:unix { 16 | isEmpty(target.path) { 17 | qnx { 18 | target.path = /tmp/$${TARGET}/bin 19 | } else { 20 | target.path = /opt/$${TARGET}/bin 21 | } 22 | export(target.path) 23 | } 24 | INSTALLS += target 25 | } 26 | 27 | export(INSTALLS) 28 | -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Argentina.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Argentina.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Bangladesh.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Bangladesh.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Brazil.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Brazil.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Chile.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Chile.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Colombia.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Colombia.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Cote_d'Ivoire.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Cote_d'Ivoire.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Egypt.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Egypt.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Germany.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Germany.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_India.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_India.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Indonesia.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Indonesia.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Iran.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Iran.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Iraq.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Iraq.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Japan.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Japan.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Kenya.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Kenya.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Mexico.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Mexico.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Myanmar.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Myanmar.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Nigeria.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Nigeria.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_North_Korea.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_North_Korea.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Pakistan.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Pakistan.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Peru.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Peru.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Russia.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Russia.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Saudi_Arabia.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Saudi_Arabia.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Singapore.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Singapore.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_South_Africa.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_South_Africa.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_South_Korea.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_South_Korea.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Spain.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Spain.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Thailand.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Thailand.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Turkey.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Turkey.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Vietnam.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_Vietnam.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_the_Democratic_Republic_of_the_Congo.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_the_Democratic_Republic_of_the_Congo.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_the_People's_Republic_of_China.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_the_People's_Republic_of_China.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_the_United_Kingdom.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_the_United_Kingdom.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_the_United_States.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/flags/22px-Flag_of_the_United_States.svg.png -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include "valuemodel.h" 5 | #include "adaptivemodel.h" 6 | 7 | int main(int argc, char *argv[]) 8 | { 9 | QGuiApplication app(argc, argv); 10 | 11 | qmlRegisterType("org.example", 1, 0, "AdaptiveModel"); 12 | qmlRegisterType("org.example", 1, 0, "ValueModel"); 13 | 14 | QQmlApplicationEngine engine; 15 | engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); 16 | 17 | return app.exec(); 18 | } 19 | -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/qml.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | main.qml 4 | Background.qml 5 | ListDelegate.qml 6 | ListHighlight.qml 7 | remove.png 8 | TextEntry.qml 9 | 10 | 11 | -------------------------------------------------------------------------------- /docs/ch17-qtcpp/src/valuemodel/remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch17-qtcpp/src/valuemodel/remove.png -------------------------------------------------------------------------------- /docs/ch18-extensions/extending-qml.md: -------------------------------------------------------------------------------- 1 | # Extending QML with C++ 2 | 3 | Creating application using only QML can sometimes be limiting. The QML run-time is developed using C++, and the run-time environment can be extended, making it possible to make use of the full performance and freedom of the surrounding system. 4 | 5 | -------------------------------------------------------------------------------- /docs/ch18-extensions/images/cityui_empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/images/cityui_empty.png -------------------------------------------------------------------------------- /docs/ch18-extensions/images/cityui_mock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/images/cityui_mock.png -------------------------------------------------------------------------------- /docs/ch18-extensions/images/cityui_populated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/images/cityui_populated.png -------------------------------------------------------------------------------- /docs/ch18-extensions/images/cityui_table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/images/cityui_table.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.16.0) 2 | 3 | add_subdirectory(CityUI) 4 | add_subdirectory(basicmain) 5 | add_subdirectory(fileio) 6 | -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.16.0) 2 | 3 | project(CityUI VERSION 1.0.0 LANGUAGES CXX) 4 | 5 | set(CMAKE_CXX_STANDARD 17) 6 | set(CMAKE_CXX_STANDARD_REQUIRED ON) 7 | 8 | set(CMAKE_AUTOMOC ON) 9 | set(CMAKE_AUTORCC ON) 10 | set(CMAKE_AUTOUIC ON) 11 | 12 | find_package(Qt6 COMPONENTS Quick REQUIRED) 13 | find_package(Qt6 COMPONENTS Widgets REQUIRED) 14 | 15 | add_executable(CityUI 16 | main.cpp 17 | qml.qrc 18 | ) 19 | 20 | target_link_libraries(CityUI PRIVATE Qt6::Quick Qt6::Widgets) 21 | -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/LICENSE.md: -------------------------------------------------------------------------------- 1 | # City Data 2 | 3 | Flags and data taken from wikipedia: 4 | 5 | http://en.wikipedia.org/wiki/List_of_cities_proper_by_population 6 | 7 | # Remove Icon 8 | 9 | Created by the author 10 | -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/deployment.pri: -------------------------------------------------------------------------------- 1 | android-no-sdk { 2 | target.path = /data/user/qt 3 | export(target.path) 4 | INSTALLS += target 5 | } else:android { 6 | x86 { 7 | target.path = /libs/x86 8 | } else: armeabi-v7a { 9 | target.path = /libs/armeabi-v7a 10 | } else { 11 | target.path = /libs/armeabi 12 | } 13 | export(target.path) 14 | INSTALLS += target 15 | } else:unix { 16 | isEmpty(target.path) { 17 | qnx { 18 | target.path = /tmp/$${TARGET}/bin 19 | } else { 20 | target.path = /opt/$${TARGET}/bin 21 | } 22 | export(target.path) 23 | } 24 | INSTALLS += target 25 | } 26 | 27 | export(INSTALLS) 28 | -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Argentina.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Argentina.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Bangladesh.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Bangladesh.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Brazil.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Brazil.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Chile.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Chile.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Colombia.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Colombia.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Cote_d'Ivoire.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Cote_d'Ivoire.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Egypt.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Egypt.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Germany.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Germany.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_India.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_India.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Indonesia.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Indonesia.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Iran.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Iran.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Iraq.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Iraq.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Japan.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Japan.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Kenya.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Kenya.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Mexico.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Mexico.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Myanmar.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Myanmar.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Nigeria.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Nigeria.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_North_Korea.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_North_Korea.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Pakistan.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Pakistan.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Peru.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Peru.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Russia.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Russia.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Saudi_Arabia.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Saudi_Arabia.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Singapore.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Singapore.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_South_Africa.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_South_Africa.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_South_Korea.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_South_Korea.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Spain.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Spain.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Thailand.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Thailand.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Turkey.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Turkey.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Vietnam.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_Vietnam.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_the_Democratic_Republic_of_the_Congo.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_the_Democratic_Republic_of_the_Congo.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_the_People's_Republic_of_China.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_the_People's_Republic_of_China.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_the_United_Kingdom.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_the_United_Kingdom.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_the_United_States.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/flags/22px-Flag_of_the_United_States.svg.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | int main(int argc, char *argv[]) 5 | { 6 | QApplication app(argc, argv); 7 | 8 | QQmlApplicationEngine engine; 9 | engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); 10 | 11 | return app.exec(); 12 | } 13 | -------------------------------------------------------------------------------- /docs/ch18-extensions/src/CityUI/remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch18-extensions/src/CityUI/remove.png -------------------------------------------------------------------------------- /docs/ch18-extensions/src/basicmain/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.16.0) 2 | 3 | project(basicmain VERSION 1.0.0 LANGUAGES CXX) 4 | 5 | set(CMAKE_CXX_STANDARD 17) 6 | set(CMAKE_CXX_STANDARD_REQUIRED ON) 7 | 8 | set(CMAKE_AUTOMOC ON) 9 | set(CMAKE_AUTORCC ON) 10 | set(CMAKE_AUTOUIC ON) 11 | 12 | find_package(Qt6 COMPONENTS Quick REQUIRED) 13 | 14 | add_executable(basicmain 15 | main.cpp 16 | basicmain.qrc 17 | ) 18 | 19 | target_link_libraries(basicmain PRIVATE Qt6::Quick) 20 | -------------------------------------------------------------------------------- /docs/ch18-extensions/src/basicmain/basicmain.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | main.qml 4 | 5 | 6 | -------------------------------------------------------------------------------- /docs/ch18-extensions/src/basicmain/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | int main(int argc, char **argv) 5 | { 6 | QGuiApplication app(argc, argv); 7 | QUrl source(QStringLiteral("qrc:/main.qml")); 8 | QQmlApplicationEngine engine; 9 | engine.load(source); 10 | return app.exec(); 11 | } 12 | -------------------------------------------------------------------------------- /docs/ch18-extensions/src/basicmain/main.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.5 2 | import QtQuick.Window 2.2 3 | 4 | Window { 5 | visible: true 6 | width: 512 7 | height: 300 8 | 9 | Text { 10 | anchors.centerIn: parent 11 | text: "Hello World!" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /docs/ch18-extensions/src/fileio/fileio.h: -------------------------------------------------------------------------------- 1 | #ifndef FILEIO_H 2 | #define FILEIO_H 3 | 4 | #include 5 | #include 6 | 7 | class FileIO : public QObject 8 | { 9 | Q_OBJECT 10 | Q_DISABLE_COPY(FileIO) 11 | Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged) 12 | Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged) 13 | QML_ELEMENT 14 | public: 15 | FileIO(QObject *parent = 0); 16 | ~FileIO(); 17 | 18 | Q_INVOKABLE void read(); 19 | Q_INVOKABLE void write(); 20 | QUrl source() const; 21 | QString text() const; 22 | public slots: 23 | void setSource(QUrl source); 24 | void setText(QString text); 25 | signals: 26 | void sourceChanged(QUrl arg); 27 | void textChanged(QString arg); 28 | private: 29 | QUrl m_source; 30 | QString m_text; 31 | }; 32 | 33 | #endif // FILEIO_H 34 | 35 | -------------------------------------------------------------------------------- /docs/ch18-extensions/src/fileio/fileio_plugin.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | class FileioPlugin : public QQmlEngineExtensionPlugin 4 | { 5 | Q_OBJECT 6 | Q_PLUGIN_METADATA(IID QQmlEngineExtensionInterface_iid) 7 | }; 8 | 9 | #include "fileio_plugin.moc" 10 | -------------------------------------------------------------------------------- /docs/ch18-extensions/src/fileio/qmldir: -------------------------------------------------------------------------------- 1 | module org.example.io 2 | plugin fileio 3 | 4 | -------------------------------------------------------------------------------- /docs/ch19-python/assets/cpu-load-model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch19-python/assets/cpu-load-model.png -------------------------------------------------------------------------------- /docs/ch19-python/assets/pyside2-hello-world.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch19-python/assets/pyside2-hello-world.png -------------------------------------------------------------------------------- /docs/ch19-python/assets/pyside6-hello-world.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch19-python/assets/pyside6-hello-world.png -------------------------------------------------------------------------------- /docs/ch19-python/assets/qml-hello-world.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch19-python/assets/qml-hello-world.png -------------------------------------------------------------------------------- /docs/ch19-python/limitations.md: -------------------------------------------------------------------------------- 1 | # Limitations 2 | 3 | At the moment, there are some things that are not easily available. One of them is that you cannot easily create QML plugins using Python. Instead you need to import the Python QML “modules” into your Python program and then use qmlRegisterType to make it possible to import them from QML. 4 | 5 | -------------------------------------------------------------------------------- /docs/ch19-python/qt-python.md: -------------------------------------------------------------------------------- 1 | # Qt for Python 2 | 3 | This chapter describes the PySide6 module from the Qt for Python project. You will learn how to install it and how to leverage QML together with Python. 4 | 5 | -------------------------------------------------------------------------------- /docs/ch19-python/summary.md: -------------------------------------------------------------------------------- 1 | # Summary 2 | 3 | In this chapter we have looked at the PySide6 module from the Qt for Python project. After a brief look at installation, we focused on how Qt concepts are used from Python. This included slots, signals and properties. We also looked at a basic list model and how to expose both Python objects and classes from Python to QML. 4 | -------------------------------------------------------------------------------- /docs/ch20-qtformcu/assets/counter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch20-qtformcu/assets/counter.png -------------------------------------------------------------------------------- /docs/ch20-qtformcu/assets/create-project-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch20-qtformcu/assets/create-project-1.png -------------------------------------------------------------------------------- /docs/ch20-qtformcu/assets/create-project-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch20-qtformcu/assets/create-project-2.png -------------------------------------------------------------------------------- /docs/ch20-qtformcu/assets/create-project-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch20-qtformcu/assets/create-project-3.png -------------------------------------------------------------------------------- /docs/ch20-qtformcu/assets/devices.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch20-qtformcu/assets/devices.png -------------------------------------------------------------------------------- /docs/ch20-qtformcu/assets/hello-world-orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch20-qtformcu/assets/hello-world-orange.png -------------------------------------------------------------------------------- /docs/ch20-qtformcu/assets/hello-world-red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch20-qtformcu/assets/hello-world-red.png -------------------------------------------------------------------------------- /docs/ch20-qtformcu/assets/installer-mcu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch20-qtformcu/assets/installer-mcu.png -------------------------------------------------------------------------------- /docs/ch20-qtformcu/assets/kits.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch20-qtformcu/assets/kits.png -------------------------------------------------------------------------------- /docs/ch20-qtformcu/assets/model-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch20-qtformcu/assets/model-1.png -------------------------------------------------------------------------------- /docs/ch20-qtformcu/assets/model-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch20-qtformcu/assets/model-2.png -------------------------------------------------------------------------------- /docs/ch20-qtformcu/assets/model-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch20-qtformcu/assets/model-3.png -------------------------------------------------------------------------------- /docs/ch20-qtformcu/assets/qtcreator-qml-import-path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch20-qtformcu/assets/qtcreator-qml-import-path.png -------------------------------------------------------------------------------- /docs/ch20-qtformcu/assets/qtcreator-with-project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch20-qtformcu/assets/qtcreator-with-project.png -------------------------------------------------------------------------------- /docs/ch20-qtformcu/assets/qul-hello-world.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/ch20-qtformcu/assets/qul-hello-world.png -------------------------------------------------------------------------------- /docs/ch20-qtformcu/qtformcu.md: -------------------------------------------------------------------------------- 1 | # Qt for MCUs 2 | 3 | ::: tip Notice 4 | Qt for MCUs is not a part of the open source Qt distribution, but as a commercial add-on. 5 | ::: 6 | 7 | Qt for MCUs is a Qt version takes Qt for platforms that are too small to run Linux. Instead, Qt for MCUs can run on top of FreeRTOS, or even on the bare metal, i.e. without any operating system involved. As this book focuses on QML, we will have a deeper look at Qt Quick Ultralite and compare it to the full-size Qt offering. 8 | 9 | Using Qt for MCUs you can build beautiful, fluid graphical user interfaces for your micro controller-based systems. Qt for MCUs is focused on the graphical front-end, so instead of the traditional Qt modules, common C++ types are used. This means that some interfaces change. Most notably how models are exposed to QML. In this chapter we will dive into this, and more. 10 | -------------------------------------------------------------------------------- /docs/ch20-qtformcu/src/cppintegration/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required (VERSION 3.15) 2 | 3 | project(cppintegration VERSION 0.0.1 LANGUAGES C CXX ASM) 4 | 5 | find_package(Qul) 6 | 7 | if(Qul_VERSION VERSION_GREATER_EQUAL "1.7") 8 | qul_add_target(cppintegration counter.cpp) 9 | else() 10 | add_executable(cppintegration counter.cpp) 11 | target_link_libraries(cppintegration 12 | Qul::QuickUltralite 13 | Qul::QuickUltralitePlatform) 14 | endif() 15 | 16 | #region generate_interfaces 17 | qul_target_generate_interfaces(cppintegration counter.h) 18 | #endregion generate_interfaces 19 | qul_target_qml_sources(cppintegration cppintegration.qml PlainButton.qml) 20 | 21 | app_target_setup_os(cppintegration) 22 | app_target_default_main(cppintegration cppintegration) 23 | -------------------------------------------------------------------------------- /docs/ch20-qtformcu/src/cppmodel/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required (VERSION 3.15) 2 | 3 | project(cppmodel VERSION 0.0.1 LANGUAGES C CXX ASM) 4 | 5 | find_package(Qul) 6 | 7 | if(Qul_VERSION VERSION_GREATER_EQUAL "1.7") 8 | qul_add_target(cppmodel citymodel.cpp) 9 | else() 10 | add_executable(cppmodel citymodel.cpp) 11 | target_link_libraries(cppmodel 12 | Qul::QuickUltralite 13 | Qul::QuickUltralitePlatform) 14 | endif() 15 | 16 | qul_target_generate_interfaces(cppmodel citymodel.h) 17 | qul_target_qml_sources(cppmodel cppmodel.qml) 18 | 19 | app_target_setup_os(cppmodel) 20 | 21 | if(Qul_VERSION VERSION_GREATER_EQUAL "2.0") 22 | app_target_default_entrypoint(cppmodel cppmodel) 23 | else() 24 | app_target_default_main(cppmodel cppmodel) 25 | endif() 26 | -------------------------------------------------------------------------------- /docs/ch20-qtformcu/src/helloworld/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required (VERSION 3.15) 2 | 3 | project(helloworld VERSION 0.0.1 LANGUAGES C CXX ASM) 4 | 5 | find_package(Qul) 6 | 7 | if(Qul_VERSION VERSION_GREATER_EQUAL "1.7") 8 | qul_add_target(helloworld) 9 | else() 10 | add_executable(helloworld) 11 | target_link_libraries(helloworld 12 | Qul::QuickUltralite 13 | Qul::QuickUltralitePlatform) 14 | endif() 15 | 16 | qul_target_qml_sources(helloworld helloworld.qml) 17 | 18 | app_target_setup_os(helloworld) 19 | app_target_default_main(helloworld helloworld) 20 | -------------------------------------------------------------------------------- /docs/ch20-qtformcu/summary.md: -------------------------------------------------------------------------------- 1 | # Summary 2 | 3 | In this chapter we've scratched the surface of Qt for MCUs and Qt Quick Ultralite. These technologies bring Qt to much smaller platforms and make it truly embeddable. Through-out this chapter, we've used the virtual desktop target, which allows for quick prototyping. Targeting a specific board is just as easy, but requires access to hardware and the associated tools. 4 | 5 | Key take-aways from using Qt Quick Ultralite is that there are fewer built in elements, and that some APIs are slightly more restricted. But given the intended target systems, this is usually not a hindrance. Qt Quick Ultralite also turns QML into a compiled language, which actually is nice. It allows you to catch more errors during compile time, instead of having to test more during run time. 6 | -------------------------------------------------------------------------------- /docs/preface/assets/clorquet.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/preface/assets/clorquet.jpg -------------------------------------------------------------------------------- /docs/preface/assets/jryannel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/preface/assets/jryannel.jpg -------------------------------------------------------------------------------- /docs/preface/assets/jthelin.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qmlbook/qt6book/289f7d242b87503b21d0c9ccecde2504365d6fde/docs/preface/assets/jthelin.jpg -------------------------------------------------------------------------------- /scripts/build-examples.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | if ! test -d _examples; then 6 | mkdir _examples 7 | fi 8 | 9 | cd _examples 10 | cmake .. 11 | make 12 | cd .. 13 | -------------------------------------------------------------------------------- /scripts/lint-examples.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 4 | # Script to run qmllint on all example qml files 5 | # 6 | 7 | for f in $(find docs/ -name *.qml) 8 | do 9 | qmllint $f 10 | done 11 | -------------------------------------------------------------------------------- /scripts/make-screenshots.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | SCREENSHOTS=$(find -name screenshots.qml) 6 | 7 | for SS in $SCREENSHOTS 8 | do 9 | SSD=$(dirname $SS) 10 | pushd $SSD > /dev/null 11 | shorty screenshots.qml 12 | popd > /dev/null 13 | done 14 | --------------------------------------------------------------------------------