summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2017-08-31 10:25:42 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2018-10-31 15:08:24 +0000
commit1631c8bbfdf1bcabe3d860db4626adb780a988e7 (patch)
tree9ab7f1163cbf2398015b44e534859fbaf2b45abf
parent356ca93eb2f9d3e4be2caf0a0a13cde9cb75e807 (diff)
downloadqtbase-wip/qbs2.tar.gz
Port the exampleswip/qbs2
Change-Id: I86d7bddf956b8d48b05b0b96112a74e7e270bb23 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r--examples/corelib/corelib.qbs12
-rw-r--r--examples/corelib/ipc/ipc.qbs10
-rw-r--r--examples/corelib/ipc/localfortuneclient/localfortuneclient.qbs21
-rw-r--r--examples/corelib/ipc/localfortuneserver/localfortuneserver.qbs21
-rw-r--r--examples/corelib/ipc/sharedmemory/sharedmemory.qbs24
-rw-r--r--examples/corelib/serialization/savegame/savegame.qbs23
-rw-r--r--examples/corelib/serialization/serialization.qbs8
-rw-r--r--examples/corelib/threads/mandelbrot/mandelbrot.qbs27
-rw-r--r--examples/corelib/threads/queuedcustomtype/queuedcustomtype.qbs23
-rw-r--r--examples/corelib/threads/semaphores/semaphores.qbs17
-rw-r--r--examples/corelib/threads/threads.qbs11
-rw-r--r--examples/corelib/threads/waitconditions/waitconditions.qbs17
-rw-r--r--examples/corelib/tools/contiguouscache/contiguouscache.qbs20
-rw-r--r--examples/corelib/tools/customtype/customtype.qbs20
-rw-r--r--examples/corelib/tools/customtypesending/customtypesending.qbs22
-rw-r--r--examples/corelib/tools/tools.qbs10
-rw-r--r--examples/dbus/chat/chat.qbs29
-rw-r--r--examples/dbus/complexpingpong/complexping.qbs21
-rw-r--r--examples/dbus/complexpingpong/complexpingpong.qbs9
-rw-r--r--examples/dbus/complexpingpong/complexpong.qbs20
-rw-r--r--examples/dbus/dbus.qbs12
-rw-r--r--examples/dbus/listnames/listnames.qbs20
-rw-r--r--examples/dbus/pingpong/ping.qbs20
-rw-r--r--examples/dbus/pingpong/pingpong.qbs9
-rw-r--r--examples/dbus/pingpong/pong.qbs21
-rw-r--r--examples/dbus/remotecontrolledcar/car/car.qbs25
-rw-r--r--examples/dbus/remotecontrolledcar/controller/controller.qbs26
-rw-r--r--examples/dbus/remotecontrolledcar/remotecontrolledcar.qbs9
-rw-r--r--examples/examples-all.qbs9
-rw-r--r--examples/examples-deployment.qbs30
-rw-r--r--examples/examples-products.qbs26
-rw-r--r--examples/examples.qbs23
-rw-r--r--examples/gui/analogclock/analogclock.qbs20
-rw-r--r--examples/gui/gui.qbs10
-rw-r--r--examples/gui/openglwindow/openglwindow.qbs13
-rw-r--r--examples/gui/rasterwindow/rasterwindow.qbs20
-rw-r--r--examples/imports/CppApplication.qbs4
-rw-r--r--examples/imports/DynamicLibrary.qbs5
-rw-r--r--examples/imports/StaticLibrary.qbs5
-rw-r--r--examples/network/bearermonitor/bearermonitor.qbs34
-rw-r--r--examples/network/blockingfortuneclient/blockingfortuneclient.qbs25
-rw-r--r--examples/network/broadcastreceiver/broadcastreceiver.qbs23
-rw-r--r--examples/network/broadcastsender/broadcastsender.qbs23
-rw-r--r--examples/network/dnslookup/dnslookup.qbs21
-rw-r--r--examples/network/download/download.qbs20
-rw-r--r--examples/network/downloadmanager/downloadmanager.qbs24
-rw-r--r--examples/network/fortuneclient/fortuneclient.qbs23
-rw-r--r--examples/network/fortuneserver/fortuneserver.qbs22
-rw-r--r--examples/network/googlesuggest/googlesuggest.qbs24
-rw-r--r--examples/network/http/http.qbs23
-rw-r--r--examples/network/loopback/loopback.qbs22
-rw-r--r--examples/network/multicastreceiver/multicastreceiver.qbs23
-rw-r--r--examples/network/multicastsender/multicastsender.qbs22
-rw-r--r--examples/network/multistreamclient/multistreamclient.qbs30
-rw-r--r--examples/network/multistreamserver/multistreamserver.qbs31
-rw-r--r--examples/network/network-chat/network-chat.qbs34
-rw-r--r--examples/network/network.qbs27
-rw-r--r--examples/network/securesocketclient/securesocketclient.qbs30
-rw-r--r--examples/network/threadedfortuneserver/threadedfortuneserver.qbs27
-rw-r--r--examples/network/torrent/torrent.qbs44
-rw-r--r--examples/opengl/2dpainting/2dpainting.qbs28
-rw-r--r--examples/opengl/contextinfo/contextinfo.qbs24
-rw-r--r--examples/opengl/cube/cube.qbs26
-rw-r--r--examples/opengl/hellogl2/hellogl2.qbs28
-rw-r--r--examples/opengl/hellogles3/hellogles3.qbs24
-rw-r--r--examples/opengl/hellowindow/hellowindow.qbs23
-rw-r--r--examples/opengl/opengl.qbs19
-rw-r--r--examples/opengl/paintedwindow/paintedwindow.qbs21
-rw-r--r--examples/opengl/qopenglwidget/qopenglwidget.qbs27
-rw-r--r--examples/opengl/qopenglwindow/qopenglwindow.qbs24
-rw-r--r--examples/opengl/textures/textures.qbs25
-rw-r--r--examples/opengl/threadedqopenglwidget/threadedqopenglwidget.qbs24
-rw-r--r--examples/qtconcurrent/imagescaling/imagescaling.qbs23
-rw-r--r--examples/qtconcurrent/map/map.qbs22
-rw-r--r--examples/qtconcurrent/progressdialog/progressdialog.qbs22
-rw-r--r--examples/qtconcurrent/qtconcurrent.qbs12
-rw-r--r--examples/qtconcurrent/runfunction/runfunction.qbs22
-rw-r--r--examples/qtconcurrent/wordcount/wordcount.qbs23
-rw-r--r--examples/qtestlib/qtestlib.qbs11
-rw-r--r--examples/qtestlib/tutorial1/tutorial1.qbs20
-rw-r--r--examples/qtestlib/tutorial2/tutorial2.qbs20
-rw-r--r--examples/qtestlib/tutorial3/tutorial3.qbs20
-rw-r--r--examples/qtestlib/tutorial4/tutorial4.qbs20
-rw-r--r--examples/qtestlib/tutorial5/tutorial5.qbs20
-rw-r--r--examples/widgets/animation/animatedtiles/animatedtiles.qbs21
-rw-r--r--examples/widgets/animation/animation.qbs13
-rw-r--r--examples/widgets/animation/easing/easing.qbs25
-rw-r--r--examples/widgets/animation/moveblocks/moveblocks.qbs20
-rw-r--r--examples/widgets/animation/states/states.qbs21
-rw-r--r--examples/widgets/animation/stickman/stickman.qbs33
-rw-r--r--examples/widgets/animation/sub-attaq/sub-attaq.qbs48
-rw-r--r--examples/widgets/desktop/desktop.qbs9
-rw-r--r--examples/widgets/desktop/screenshot/screenshot.qbs22
-rw-r--r--examples/widgets/desktop/systray/systray.qbs23
-rw-r--r--examples/widgets/dialogs/classwizard/classwizard.qbs23
-rw-r--r--examples/widgets/dialogs/dialogs.qbs14
-rw-r--r--examples/widgets/dialogs/extension/extension.qbs22
-rw-r--r--examples/widgets/dialogs/findfiles/findfiles.qbs22
-rw-r--r--examples/widgets/dialogs/licensewizard/licensewizard.qbs24
-rw-r--r--examples/widgets/dialogs/standarddialogs/standarddialogs.qbs22
-rw-r--r--examples/widgets/dialogs/tabdialog/tabdialog.qbs22
-rw-r--r--examples/widgets/dialogs/trivialwizard/trivialwizard.qbs20
-rw-r--r--examples/widgets/draganddrop/draganddrop.qbs12
-rw-r--r--examples/widgets/draganddrop/draggableicons/draggableicons.qbs24
-rw-r--r--examples/widgets/draganddrop/draggabletext/draggabletext.qbs24
-rw-r--r--examples/widgets/draganddrop/dropsite/dropsite.qbs25
-rw-r--r--examples/widgets/draganddrop/fridgemagnets/fridgemagnets.qbs26
-rw-r--r--examples/widgets/draganddrop/puzzle/puzzle.qbs30
-rw-r--r--examples/widgets/effects/blurpicker/blurpicker.qbs25
-rw-r--r--examples/widgets/effects/effects.qbs9
-rw-r--r--examples/widgets/effects/fademessage/fademessage.qbs23
-rw-r--r--examples/widgets/gestures/gestures.qbs8
-rw-r--r--examples/widgets/gestures/imagegestures/imagegestures.qbs24
-rw-r--r--examples/widgets/graphicsview/anchorlayout/anchorlayout.qbs20
-rw-r--r--examples/widgets/graphicsview/basicgraphicslayouts/basicgraphicslayouts.qbs25
-rw-r--r--examples/widgets/graphicsview/boxes/boxes.qbs42
-rw-r--r--examples/widgets/graphicsview/chip/chip.qbs29
-rw-r--r--examples/widgets/graphicsview/collidingmice/collidingmice.qbs23
-rw-r--r--examples/widgets/graphicsview/diagramscene/diagramscene.qbs31
-rw-r--r--examples/widgets/graphicsview/dragdroprobot/dragdroprobot.qbs26
-rw-r--r--examples/widgets/graphicsview/elasticnodes/elasticnodes.qbs26
-rw-r--r--examples/widgets/graphicsview/embeddeddialogs/embeddeddialogs.qbs27
-rw-r--r--examples/widgets/graphicsview/flowlayout/flowlayout.qbs25
-rw-r--r--examples/widgets/graphicsview/graphicsview.qbs20
-rw-r--r--examples/widgets/graphicsview/padnavigator/padnavigator.qbs32
-rw-r--r--examples/widgets/graphicsview/simpleanchorlayout/simpleanchorlayout.qbs20
-rw-r--r--examples/widgets/graphicsview/weatheranchorlayout/weatheranchorlayout.qbs21
-rw-r--r--examples/widgets/itemviews/addressbook/addressbook.qbs30
-rw-r--r--examples/widgets/itemviews/basicsortfiltermodel/basicsortfiltermodel.qbs22
-rw-r--r--examples/widgets/itemviews/chart/chart.qbs31
-rw-r--r--examples/widgets/itemviews/coloreditorfactory/coloreditorfactory.qbs24
-rw-r--r--examples/widgets/itemviews/combowidgetmapper/combowidgetmapper.qbs22
-rw-r--r--examples/widgets/itemviews/customsortfiltermodel/customsortfiltermodel.qbs27
-rw-r--r--examples/widgets/itemviews/dirview/dirview.qbs20
-rw-r--r--examples/widgets/itemviews/editabletreemodel/editabletreemodel.qbs28
-rw-r--r--examples/widgets/itemviews/fetchmore/fetchmore.qbs24
-rw-r--r--examples/widgets/itemviews/frozencolumn/frozencolumn.qbs23
-rw-r--r--examples/widgets/itemviews/interview/interview.qbs23
-rw-r--r--examples/widgets/itemviews/itemviews.qbs27
-rw-r--r--examples/widgets/itemviews/pixelator/pixelator.qbs28
-rw-r--r--examples/widgets/itemviews/puzzle/puzzle.qbs29
-rw-r--r--examples/widgets/itemviews/simpledommodel/simpledommodel.qbs27
-rw-r--r--examples/widgets/itemviews/simpletreemodel/simpletreemodel.qbs25
-rw-r--r--examples/widgets/itemviews/simplewidgetmapper/simplewidgetmapper.qbs22
-rw-r--r--examples/widgets/itemviews/spinboxdelegate/spinboxdelegate.qbs22
-rw-r--r--examples/widgets/itemviews/spreadsheet/spreadsheet.qbs30
-rw-r--r--examples/widgets/itemviews/stardelegate/stardelegate.qbs27
-rw-r--r--examples/widgets/itemviews/storageview/storageview.qbs22
-rw-r--r--examples/widgets/layouts/basiclayouts/basiclayouts.qbs22
-rw-r--r--examples/widgets/layouts/borderlayout/borderlayout.qbs24
-rw-r--r--examples/widgets/layouts/dynamiclayouts/dynamiclayouts.qbs22
-rw-r--r--examples/widgets/layouts/flowlayout/flowlayout.qbs25
-rw-r--r--examples/widgets/layouts/layouts.qbs11
-rw-r--r--examples/widgets/mac/mac.qbs9
-rw-r--r--examples/widgets/mac/qmaccocoaviewcontainer/qmaccocoaviewcontainer.qbs22
-rw-r--r--examples/widgets/mac/qmacnativewidget/qmacnativewidget.qbs22
-rw-r--r--examples/widgets/mainwindows/application/application.qbs24
-rw-r--r--examples/widgets/mainwindows/dockwidgets/dockwidgets.qbs25
-rw-r--r--examples/widgets/mainwindows/mainwindow/mainwindow.qbs28
-rw-r--r--examples/widgets/mainwindows/mainwindows.qbs13
-rw-r--r--examples/widgets/mainwindows/mdi/mdi.qbs26
-rw-r--r--examples/widgets/mainwindows/menus/menus.qbs23
-rw-r--r--examples/widgets/mainwindows/sdi/sdi.qbs24
-rw-r--r--examples/widgets/painting/affine/affine.qbs36
-rw-r--r--examples/widgets/painting/basicdrawing/basicdrawing.qbs25
-rw-r--r--examples/widgets/painting/composition/composition.qbs41
-rw-r--r--examples/widgets/painting/concentriccircles/concentriccircles.qbs24
-rw-r--r--examples/widgets/painting/deform/deform.qbs36
-rw-r--r--examples/widgets/painting/fontsampler/fontsampler.qbs24
-rw-r--r--examples/widgets/painting/gradients/gradients.qbs36
-rw-r--r--examples/widgets/painting/imagecomposition/imagecomposition.qbs23
-rw-r--r--examples/widgets/painting/painterpaths/painterpaths.qbs30
-rw-r--r--examples/widgets/painting/painting.qbs18
-rw-r--r--examples/widgets/painting/pathstroke/pathstroke.qbs36
-rw-r--r--examples/widgets/painting/shared/shared.qbs16
-rw-r--r--examples/widgets/painting/transformations/transformations.qbs24
-rw-r--r--examples/widgets/richtext/calendar/calendar.qbs22
-rw-r--r--examples/widgets/richtext/orderform/orderform.qbs26
-rw-r--r--examples/widgets/richtext/richtext.qbs11
-rw-r--r--examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter.qbs24
-rw-r--r--examples/widgets/richtext/textedit/textedit.qbs25
-rw-r--r--examples/widgets/scroller/graphicsview/graphicsview.qbs20
-rw-r--r--examples/widgets/scroller/scroller.qbs8
-rw-r--r--examples/widgets/statemachine/eventtransitions/eventtransitions.qbs20
-rw-r--r--examples/widgets/statemachine/factorial/factorial.qbs20
-rw-r--r--examples/widgets/statemachine/pingpong/pingpong.qbs20
-rw-r--r--examples/widgets/statemachine/rogue/rogue.qbs23
-rw-r--r--examples/widgets/statemachine/statemachine.qbs13
-rw-r--r--examples/widgets/statemachine/trafficlight/trafficlight.qbs20
-rw-r--r--examples/widgets/statemachine/twowaybutton/twowaybutton.qbs20
-rw-r--r--examples/widgets/tools/codecs/codecs.qbs24
-rw-r--r--examples/widgets/tools/completer/completer.qbs25
-rw-r--r--examples/widgets/tools/customcompleter/customcompleter.qbs25
-rw-r--r--examples/widgets/tools/echoplugin/echoplugin.qbs9
-rw-r--r--examples/widgets/tools/echoplugin/echowindow/echowindow.qbs26
-rw-r--r--examples/widgets/tools/echoplugin/plugin/plugin.qbs28
-rw-r--r--examples/widgets/tools/i18n/i18n.qbs47
-rw-r--r--examples/widgets/tools/plugandpaint/#20
-rw-r--r--examples/widgets/tools/plugandpaint/app/app.qbs32
-rw-r--r--examples/widgets/tools/plugandpaint/plugandpaint.qbs5
-rw-r--r--examples/widgets/tools/plugandpaint/plugins/basictools/basictools.qbs18
-rw-r--r--examples/widgets/tools/plugandpaint/plugins/extrafilters/extrafilters.qbs29
-rw-r--r--examples/widgets/tools/plugandpaint/plugins/plugins.qbs9
-rw-r--r--examples/widgets/tools/regexp/regexp.qbs22
-rw-r--r--examples/widgets/tools/regularexpression/regularexpression.qbs23
-rw-r--r--examples/widgets/tools/settingseditor/settingseditor.qbs28
-rw-r--r--examples/widgets/tools/styleplugin/plugin/plugin.qbs25
-rw-r--r--examples/widgets/tools/styleplugin/styleplugin.qbs9
-rw-r--r--examples/widgets/tools/styleplugin/stylewindow/stylewindow.qbs23
-rw-r--r--examples/widgets/tools/tools.qbs20
-rw-r--r--examples/widgets/tools/treemodelcompleter/treemodelcompleter.qbs25
-rw-r--r--examples/widgets/tools/undo/undo.qbs28
-rw-r--r--examples/widgets/tools/undoframework/undoframework.qbs29
-rw-r--r--examples/widgets/tutorials/addressbook/addressbook.qbs14
-rw-r--r--examples/widgets/tutorials/addressbook/part1/part1.qbs22
-rw-r--r--examples/widgets/tutorials/addressbook/part2/part2.qbs22
-rw-r--r--examples/widgets/tutorials/addressbook/part3/part3.qbs22
-rw-r--r--examples/widgets/tutorials/addressbook/part4/part4.qbs22
-rw-r--r--examples/widgets/tutorials/addressbook/part5/part5.qbs24
-rw-r--r--examples/widgets/tutorials/addressbook/part6/part6.qbs24
-rw-r--r--examples/widgets/tutorials/addressbook/part7/part7.qbs24
-rw-r--r--examples/widgets/tutorials/gettingStarted/gettingStarted.qbs8
-rw-r--r--examples/widgets/tutorials/gettingStarted/gsQt/gsqt.qbs12
-rw-r--r--examples/widgets/tutorials/gettingStarted/gsQt/part1/part1.qbs21
-rw-r--r--examples/widgets/tutorials/gettingStarted/gsQt/part2/part2.qbs21
-rw-r--r--examples/widgets/tutorials/gettingStarted/gsQt/part3/part3.qbs21
-rw-r--r--examples/widgets/tutorials/gettingStarted/gsQt/part4/part4.qbs21
-rw-r--r--examples/widgets/tutorials/gettingStarted/gsQt/part5/part5.qbs21
-rw-r--r--examples/widgets/tutorials/modelview/1_readonly/1_readonly.qbs22
-rw-r--r--examples/widgets/tutorials/modelview/2_formatting/2_formatting.qbs22
-rw-r--r--examples/widgets/tutorials/modelview/3_changingmodel/3_changingmodel.qbs22
-rw-r--r--examples/widgets/tutorials/modelview/4_headers/4_headers.qbs22
-rw-r--r--examples/widgets/tutorials/modelview/5_edit/5_edit.qbs24
-rw-r--r--examples/widgets/tutorials/modelview/6_treeview/6_treeview.qbs22
-rw-r--r--examples/widgets/tutorials/modelview/7_selections/7_selections.qbs22
-rw-r--r--examples/widgets/tutorials/modelview/modelview.qbs14
-rw-r--r--examples/widgets/tutorials/tutorials.qbs11
-rw-r--r--examples/widgets/tutorials/widgets/childwidget/childwidget.qbs20
-rw-r--r--examples/widgets/tutorials/widgets/nestedlayouts/nestedlayouts.qbs20
-rw-r--r--examples/widgets/tutorials/widgets/toplevel/toplevel.qbs20
-rw-r--r--examples/widgets/tutorials/widgets/widgets.qbs11
-rw-r--r--examples/widgets/tutorials/widgets/windowlayout/windowlayout.qbs20
-rw-r--r--examples/widgets/widgets.qbs27
-rw-r--r--examples/widgets/widgets/analogclock/analogclock.qbs23
-rw-r--r--examples/widgets/widgets/calculator/calculator.qbs24
-rw-r--r--examples/widgets/widgets/calendarwidget/calendarwidget.qbs22
-rw-r--r--examples/widgets/widgets/charactermap/charactermap.qbs24
-rw-r--r--examples/widgets/widgets/codeeditor/codeeditor.qbs22
-rw-r--r--examples/widgets/widgets/digitalclock/digitalclock.qbs22
-rw-r--r--examples/widgets/widgets/elidedlabel/elidedlabel.qbs24
-rw-r--r--examples/widgets/widgets/groupbox/groupbox.qbs22
-rw-r--r--examples/widgets/widgets/icons/icons.qbs31
-rw-r--r--examples/widgets/widgets/imageviewer/imageviewer.qbs23
-rw-r--r--examples/widgets/widgets/lineedits/lineedits.qbs22
-rw-r--r--examples/widgets/widgets/mousebuttons/mousebuttons.qbs22
-rw-r--r--examples/widgets/widgets/movie/movie.qbs23
-rw-r--r--examples/widgets/widgets/scribble/scribble.qbs25
-rw-r--r--examples/widgets/widgets/shapedclock/shapedclock.qbs22
-rw-r--r--examples/widgets/widgets/sliders/sliders.qbs24
-rw-r--r--examples/widgets/widgets/spinboxes/spinboxes.qbs22
-rw-r--r--examples/widgets/widgets/styles/styles.qbs25
-rw-r--r--examples/widgets/widgets/stylesheet/stylesheet.qbs27
-rw-r--r--examples/widgets/widgets/tablet/tablet.qbs27
-rw-r--r--examples/widgets/widgets/tetrix/tetrix.qbs26
-rw-r--r--examples/widgets/widgets/tooltips/tooltips.qbs25
-rw-r--r--examples/widgets/widgets/validators/validators.qbs28
-rw-r--r--examples/widgets/widgets/widgets.qbs32
-rw-r--r--examples/widgets/widgets/wiggly/wiggly.qbs25
-rw-r--r--examples/widgets/widgets/windowflags/windowflags.qbs24
-rw-r--r--examples/widgets/windowcontainer/windowcontainer.qbs32
-rw-r--r--examples/xml/dombookmarks/dombookmarks.qbs25
-rw-r--r--examples/xml/htmlinfo/htmlinfo.qbs21
-rw-r--r--examples/xml/rsslisting/rsslisting.qbs24
-rw-r--r--examples/xml/saxbookmarks/saxbookmarks.qbs27
-rw-r--r--examples/xml/streambookmarks/streambookmarks.qbs27
-rw-r--r--examples/xml/xml.qbs13
-rw-r--r--examples/xml/xmlstreamlint/xmlstreamlint.qbs20
-rw-r--r--qbs/imports/QtExample.qbs15
-rw-r--r--qtbase.qbs2
-rw-r--r--src/corelib/corelib.qbs1
280 files changed, 6216 insertions, 1 deletions
diff --git a/examples/corelib/corelib.qbs b/examples/corelib/corelib.qbs
new file mode 100644
index 0000000000..bd84d1c9d3
--- /dev/null
+++ b/examples/corelib/corelib.qbs
@@ -0,0 +1,12 @@
+import qbs
+
+Project {
+ name: "corelib examples"
+ references: [
+ "ipc",
+ "serialization",
+ "threads",
+ "tools",
+ ]
+}
+
diff --git a/examples/corelib/ipc/ipc.qbs b/examples/corelib/ipc/ipc.qbs
new file mode 100644
index 0000000000..2ec1336c77
--- /dev/null
+++ b/examples/corelib/ipc/ipc.qbs
@@ -0,0 +1,10 @@
+import qbs
+
+Project {
+ name: "ipc"
+ references: [
+ "localfortuneclient",
+ "localfortuneserver",
+ "sharedmemory",
+ ]
+}
diff --git a/examples/corelib/ipc/localfortuneclient/localfortuneclient.qbs b/examples/corelib/ipc/localfortuneclient/localfortuneclient.qbs
new file mode 100644
index 0000000000..0aa42d1825
--- /dev/null
+++ b/examples/corelib/ipc/localfortuneclient/localfortuneclient.qbs
@@ -0,0 +1,21 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "localfortuneclient"
+ condition: Qt.network.present && Qt.widgets.present
+ Depends { name: "Qt.core" }
+ Depends { name: "Qt.network"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+ files: [
+ "client.cpp",
+ "client.h",
+ "main.cpp",
+ ]
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir,
+ "corelib", "ipc", "localfortuneclient")
+ }
+}
diff --git a/examples/corelib/ipc/localfortuneserver/localfortuneserver.qbs b/examples/corelib/ipc/localfortuneserver/localfortuneserver.qbs
new file mode 100644
index 0000000000..373e7eac25
--- /dev/null
+++ b/examples/corelib/ipc/localfortuneserver/localfortuneserver.qbs
@@ -0,0 +1,21 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "localfortuneserver"
+ condition: Qt.network.present && Qt.widgets.present
+ Depends { name: "Qt.core" }
+ Depends { name: "Qt.network"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+ files: [
+ "main.cpp",
+ "server.cpp",
+ "server.h",
+ ]
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir,
+ "corelib", "ipc", "localfortuneserver")
+ }
+}
diff --git a/examples/corelib/ipc/sharedmemory/sharedmemory.qbs b/examples/corelib/ipc/sharedmemory/sharedmemory.qbs
new file mode 100644
index 0000000000..fe6e1357da
--- /dev/null
+++ b/examples/corelib/ipc/sharedmemory/sharedmemory.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "sharedmemory"
+ condition: Qt.widgets.present && !qbs.targetOS.contains("vxworks")
+ && Qt.core.config.sharedmemory && Qt.widgets.config.filedialog
+
+ Depends { name: "Qt.core" }
+ Depends { name: "Qt.widgets"; required: false }
+ files: [
+ "dialog.cpp",
+ "dialog.h",
+ "dialog.ui",
+ "main.cpp",
+ "*.png",
+ ]
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir,
+ "corelib", "ipc", "sharedmemory")
+ }
+}
diff --git a/examples/corelib/serialization/savegame/savegame.qbs b/examples/corelib/serialization/savegame/savegame.qbs
new file mode 100644
index 0000000000..5b69478d3b
--- /dev/null
+++ b/examples/corelib/serialization/savegame/savegame.qbs
@@ -0,0 +1,23 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "savegame"
+ consoleApplication: true
+ Depends { name: "Qt.core" }
+ files: [
+ "character.cpp",
+ "character.h",
+ "game.cpp",
+ "game.h",
+ "level.cpp",
+ "level.h",
+ "main.cpp",
+ ]
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir,
+ "corelib", "serialization", "savegame")
+ }
+}
diff --git a/examples/corelib/serialization/serialization.qbs b/examples/corelib/serialization/serialization.qbs
new file mode 100644
index 0000000000..a1e91ba2f6
--- /dev/null
+++ b/examples/corelib/serialization/serialization.qbs
@@ -0,0 +1,8 @@
+import qbs
+
+Project {
+ references: [
+ "savegame",
+ ]
+}
+
diff --git a/examples/corelib/threads/mandelbrot/mandelbrot.qbs b/examples/corelib/threads/mandelbrot/mandelbrot.qbs
new file mode 100644
index 0000000000..b87ff6f68e
--- /dev/null
+++ b/examples/corelib/threads/mandelbrot/mandelbrot.qbs
@@ -0,0 +1,27 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "mandelbrot"
+ condition: Qt.widgets.present
+ Depends { name: "Qt.core" }
+ Depends { name: "Qt.widgets"; required: false }
+ files: [
+ "main.cpp",
+ "mandelbrotwidget.cpp",
+ "mandelbrotwidget.h",
+ "renderthread.cpp",
+ "renderthread.h",
+ ]
+ Properties {
+ condition: qbs.targetOS.contains("unix")
+ && !qbs.targetOS.containsAny(["darwin", "vxworks", "integrity", "haiku"])
+ cpp.dynamicLibraries: base.concat("m")
+ }
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir,
+ "corelib", "threads", "mandelbrot")
+ }
+}
diff --git a/examples/corelib/threads/queuedcustomtype/queuedcustomtype.qbs b/examples/corelib/threads/queuedcustomtype/queuedcustomtype.qbs
new file mode 100644
index 0000000000..1dd29e0439
--- /dev/null
+++ b/examples/corelib/threads/queuedcustomtype/queuedcustomtype.qbs
@@ -0,0 +1,23 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ condition: Qt.widgets.present && Qt.widgets.config.filedialog
+ Depends { name: "Qt.core" }
+ Depends { name: "Qt.widgets"; required: false }
+ files: [
+ "block.cpp",
+ "block.h",
+ "main.cpp",
+ "renderthread.cpp",
+ "renderthread.h",
+ "window.cpp",
+ "window.h",
+ ]
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir,
+ "corelib", "threads", "queuedcustomtype")
+ }
+}
diff --git a/examples/corelib/threads/semaphores/semaphores.qbs b/examples/corelib/threads/semaphores/semaphores.qbs
new file mode 100644
index 0000000000..3fc24ab959
--- /dev/null
+++ b/examples/corelib/threads/semaphores/semaphores.qbs
@@ -0,0 +1,17 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "semaphores"
+ consoleApplication: true
+ Depends { name: "Qt.core" }
+ files: [
+ "semaphores.cpp",
+ ]
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir,
+ "corelib", "threads", "semaphores")
+ }
+}
diff --git a/examples/corelib/threads/threads.qbs b/examples/corelib/threads/threads.qbs
new file mode 100644
index 0000000000..89858d23d4
--- /dev/null
+++ b/examples/corelib/threads/threads.qbs
@@ -0,0 +1,11 @@
+import qbs
+
+Project {
+ name: "threads"
+ references: [
+ "mandelbrot",
+ "queuedcustomtype",
+ "semaphores",
+ "waitconditions",
+ ]
+}
diff --git a/examples/corelib/threads/waitconditions/waitconditions.qbs b/examples/corelib/threads/waitconditions/waitconditions.qbs
new file mode 100644
index 0000000000..086b92400c
--- /dev/null
+++ b/examples/corelib/threads/waitconditions/waitconditions.qbs
@@ -0,0 +1,17 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "waitconditions"
+ Depends { name: "Qt.core" }
+ consoleApplication: true
+ files: [
+ "waitconditions.cpp",
+ ]
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir,
+ "corelib", "threads", "waitconditions")
+ }
+}
diff --git a/examples/corelib/tools/contiguouscache/contiguouscache.qbs b/examples/corelib/tools/contiguouscache/contiguouscache.qbs
new file mode 100644
index 0000000000..a471ac31d4
--- /dev/null
+++ b/examples/corelib/tools/contiguouscache/contiguouscache.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "contiguouscache"
+ condition: Qt.widgets.present && Qt.widgets.config.listview
+ Depends { name: "Qt.core" }
+ Depends { name: "Qt.widgets"; required: false }
+ files: [
+ "main.cpp",
+ "randomlistmodel.cpp",
+ "randomlistmodel.h",
+ ]
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir,
+ "corelib", "tools", "contiguouscache")
+ }
+}
diff --git a/examples/corelib/tools/customtype/customtype.qbs b/examples/corelib/tools/customtype/customtype.qbs
new file mode 100644
index 0000000000..783cbbd96b
--- /dev/null
+++ b/examples/corelib/tools/customtype/customtype.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "customtype"
+ condition: Qt.widgets.present
+ Depends { name: "Qt.core" }
+ Depends { name: "Qt.widgets"; required: false }
+ files: [
+ "main.cpp",
+ "message.cpp",
+ "message.h",
+ ]
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir,
+ "corelib", "tools", "customcompleter")
+ }
+}
diff --git a/examples/corelib/tools/customtypesending/customtypesending.qbs b/examples/corelib/tools/customtypesending/customtypesending.qbs
new file mode 100644
index 0000000000..167071b3f9
--- /dev/null
+++ b/examples/corelib/tools/customtypesending/customtypesending.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "customtypesending"
+ condition: Qt.widgets.present
+ Depends { name: "Qt.core" }
+ Depends { name: "Qt.widgets"; required: false }
+ files: [
+ "main.cpp",
+ "message.cpp",
+ "message.h",
+ "window.cpp",
+ "window.h",
+ ]
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir,
+ "corelib", "tools", "customcompleter")
+ }
+}
diff --git a/examples/corelib/tools/tools.qbs b/examples/corelib/tools/tools.qbs
new file mode 100644
index 0000000000..ea415bb802
--- /dev/null
+++ b/examples/corelib/tools/tools.qbs
@@ -0,0 +1,10 @@
+import qbs
+
+Project {
+ name: "tools"
+ references: [
+ "contiguouscache",
+ "customtype",
+ "customtypesending",
+ ]
+}
diff --git a/examples/dbus/chat/chat.qbs b/examples/dbus/chat/chat.qbs
new file mode 100644
index 0000000000..ce9cbbf173
--- /dev/null
+++ b/examples/dbus/chat/chat.qbs
@@ -0,0 +1,29 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "chat"
+ condition: Qt.dbus.present && Qt.widgets.present
+
+ Depends { name: "Qt.dbus"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "chat.cpp",
+ "chat.h",
+ "chatmainwindow.ui",
+ "chatsetnickname.ui",
+ ]
+
+ Group {
+ name: "xml file"
+ files: ["org.example.chat.xml"]
+ fileTags: ["qt.dbus.adaptor", "qt.dbus.interface"]
+ }
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "dbus", "chat")
+ }
+}
diff --git a/examples/dbus/complexpingpong/complexping.qbs b/examples/dbus/complexpingpong/complexping.qbs
new file mode 100644
index 0000000000..77383a2bc3
--- /dev/null
+++ b/examples/dbus/complexpingpong/complexping.qbs
@@ -0,0 +1,21 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "complexping"
+ condition: Qt.dbus.present
+
+ Depends { name: "Qt.dbus"; required: false }
+
+ files: [
+ "complexping.cpp",
+ "complexping.h",
+ "ping-common.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "dbus", "complexpingpong")
+ }
+}
diff --git a/examples/dbus/complexpingpong/complexpingpong.qbs b/examples/dbus/complexpingpong/complexpingpong.qbs
new file mode 100644
index 0000000000..19fb2c972a
--- /dev/null
+++ b/examples/dbus/complexpingpong/complexpingpong.qbs
@@ -0,0 +1,9 @@
+import qbs
+
+Project {
+ name: "complexpingpong"
+ references: [
+ "complexping.qbs",
+ "complexpong.qbs",
+ ]
+}
diff --git a/examples/dbus/complexpingpong/complexpong.qbs b/examples/dbus/complexpingpong/complexpong.qbs
new file mode 100644
index 0000000000..3517d0b6a8
--- /dev/null
+++ b/examples/dbus/complexpingpong/complexpong.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "complexpong"
+ condition: Qt.dbus.present
+
+ Depends { name: "Qt.dbus"; required: false }
+
+ files: [
+ "complexpong.cpp",
+ "complexpong.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "dbus", "complexpingpong")
+ }
+}
diff --git a/examples/dbus/dbus.qbs b/examples/dbus/dbus.qbs
new file mode 100644
index 0000000000..2cff29393e
--- /dev/null
+++ b/examples/dbus/dbus.qbs
@@ -0,0 +1,12 @@
+import qbs
+
+Project {
+ name: "dbus"
+ references: [
+ "chat",
+ "complexpingpong/complexpingpong.qbs",
+ "listnames",
+ "pingpong/pingpong.qbs",
+ "remotecontrolledcar",
+ ]
+}
diff --git a/examples/dbus/listnames/listnames.qbs b/examples/dbus/listnames/listnames.qbs
new file mode 100644
index 0000000000..789ed3090e
--- /dev/null
+++ b/examples/dbus/listnames/listnames.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "listnames"
+ condition: Qt.dbus.present
+ consoleApplication: qbs.targetOS.contains("windows")
+
+ Depends { name: "Qt.dbus"; required: false }
+
+ files: [
+ "listnames.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "dbus", "listnames")
+ }
+}
diff --git a/examples/dbus/pingpong/ping.qbs b/examples/dbus/pingpong/ping.qbs
new file mode 100644
index 0000000000..c98ab23a81
--- /dev/null
+++ b/examples/dbus/pingpong/ping.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "ping"
+ condition: Qt.dbus.present
+
+ Depends { name: "Qt.dbus"; required: false }
+
+ files: [
+ "ping-common.h",
+ "ping.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "dbus", "pingpong")
+ }
+}
diff --git a/examples/dbus/pingpong/pingpong.qbs b/examples/dbus/pingpong/pingpong.qbs
new file mode 100644
index 0000000000..e940981d37
--- /dev/null
+++ b/examples/dbus/pingpong/pingpong.qbs
@@ -0,0 +1,9 @@
+import qbs
+
+Project {
+ name: "pingpong"
+ references: [
+ "ping.qbs",
+ "pong.qbs",
+ ]
+}
diff --git a/examples/dbus/pingpong/pong.qbs b/examples/dbus/pingpong/pong.qbs
new file mode 100644
index 0000000000..e4b8798dd0
--- /dev/null
+++ b/examples/dbus/pingpong/pong.qbs
@@ -0,0 +1,21 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "pong"
+ condition: Qt.dbus.present
+
+ Depends { name: "Qt.dbus"; required: false }
+
+ files: [
+ "ping-common.h",
+ "pong.cpp",
+ "pong.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "dbus", "pingpong")
+ }
+}
diff --git a/examples/dbus/remotecontrolledcar/car/car.qbs b/examples/dbus/remotecontrolledcar/car/car.qbs
new file mode 100644
index 0000000000..ab1418cb9b
--- /dev/null
+++ b/examples/dbus/remotecontrolledcar/car/car.qbs
@@ -0,0 +1,25 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "car"
+ condition: Qt.dbus.present && Qt.widgets.present
+ Depends { name: "Qt.dbus"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+ files: [
+ "car.cpp",
+ "car.h",
+ "main.cpp",
+ ]
+ Group {
+ name: "dbus adaptor"
+ files: ["car.xml"]
+ fileTags: ["qt.dbus.adaptor"]
+ }
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir,
+ "dbus", "remotecontrolledcar", "car")
+ }
+}
diff --git a/examples/dbus/remotecontrolledcar/controller/controller.qbs b/examples/dbus/remotecontrolledcar/controller/controller.qbs
new file mode 100644
index 0000000000..45cc0ded9e
--- /dev/null
+++ b/examples/dbus/remotecontrolledcar/controller/controller.qbs
@@ -0,0 +1,26 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "controller"
+ condition: Qt.dbus.present && Qt.widgets.present
+ Depends { name: "Qt.dbus"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+ files: [
+ "controller.cpp",
+ "controller.h",
+ "controller.ui",
+ "main.cpp",
+ ]
+ Group {
+ name: "dbus interface"
+ files: ["car.xml"]
+ fileTags: ["qt.dbus.interface"]
+ }
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir,
+ "dbus", "remotecontrolledcar", "controller")
+ }
+}
diff --git a/examples/dbus/remotecontrolledcar/remotecontrolledcar.qbs b/examples/dbus/remotecontrolledcar/remotecontrolledcar.qbs
new file mode 100644
index 0000000000..06d0a12437
--- /dev/null
+++ b/examples/dbus/remotecontrolledcar/remotecontrolledcar.qbs
@@ -0,0 +1,9 @@
+import qbs
+
+Project {
+ name: "remotecontrolledcar"
+ references: [
+ "car",
+ "controller",
+ ]
+}
diff --git a/examples/examples-all.qbs b/examples/examples-all.qbs
new file mode 100644
index 0000000000..aa34dbccfd
--- /dev/null
+++ b/examples/examples-all.qbs
@@ -0,0 +1,9 @@
+import qbs
+
+Project {
+ name: "examples"
+ references: [
+ "examples-deployment.qbs",
+ "examples-products.qbs",
+ ]
+}
diff --git a/examples/examples-deployment.qbs b/examples/examples-deployment.qbs
new file mode 100644
index 0000000000..e9e5fcf5f9
--- /dev/null
+++ b/examples/examples-deployment.qbs
@@ -0,0 +1,30 @@
+import qbs
+
+Product {
+ name: "examples (deployment)"
+ multiplexByQbsProperties: ["profiles"]
+ qbs.profiles: ["qt_targetProfile"]
+ Group {
+ files: [
+ "**"
+ ]
+ excludeFiles: [
+ "examples-all.qbs",
+ "examples-deployment.qbs",
+ "examples-products.qbs",
+ "imports/*",
+ "**/doc/**/*",
+ "aggregate/examples.pro",
+
+ // TODO:
+ // The following don't seem to get installed when building with qmake,
+ // though I don't see in all cases how they are excluded and whether
+ // that is on purpose.
+ "embedded/**",
+ "qmake/**",
+ ]
+ qbs.install: true
+ qbs.installDir: "examples"
+ qbs.installSourceBase: sourceDirectory
+ }
+}
diff --git a/examples/examples-products.qbs b/examples/examples-products.qbs
new file mode 100644
index 0000000000..151501f581
--- /dev/null
+++ b/examples/examples-products.qbs
@@ -0,0 +1,26 @@
+import qbs
+
+Project {
+ name: "examples (actual products)"
+ qbsSearchPaths: [
+ ".",
+ project.qtbaseShadowDir + "/src/corelib/qbs", // For QtCoreConfig.
+ project.qtbaseShadowDir + "/src/gui/qbs", // For QtGuiConfig.
+ project.qtbaseShadowDir + "/src/network/qbs", // For QtNetworkConfig.
+ ]
+ references: [
+ "corelib/corelib.qbs",
+ "dbus/dbus.qbs",
+// "embedded/embedded.qbs",
+ "gui/gui.qbs",
+ "network/network.qbs",
+// "opengl/opengl.qbs",
+// "qpa/qpa.qbs",
+ "qtconcurrent/qtconcurrent.qbs",
+ "qtestlib/qtestlib.qbs",
+// "sql/sql.qbs",
+// "touch/touch.qbs",
+ "widgets/widgets.qbs",
+ "xml/xml.qbs",
+ ]
+}
diff --git a/examples/examples.qbs b/examples/examples.qbs
new file mode 100644
index 0000000000..ec4b4b7f43
--- /dev/null
+++ b/examples/examples.qbs
@@ -0,0 +1,23 @@
+import qbs
+import qbs.File
+import qbs.FileInfo
+
+Project {
+ name: "examples"
+ Probe {
+ id: subProjectsProbe
+ property stringList subProjectFilePaths
+ configure: {
+ var projectFiles = [];
+ var dirs = File.directoryEntries(path, File.Dirs);
+ for (var i = 0; i < dirs.length; ++i) {
+ var candidate = FileInfo.joinPaths(path, dirs[i], dirs[i] + ".qbs");
+ if (File.exists(candidate))
+ projectFiles.push(candidate);
+ }
+ subProjectFilePaths = projectFiles;
+ found = true;
+ }
+ }
+ references: subProjectsProbe.subProjectFilePaths
+}
diff --git a/examples/gui/analogclock/analogclock.qbs b/examples/gui/analogclock/analogclock.qbs
new file mode 100644
index 0000000000..4cf7d1745a
--- /dev/null
+++ b/examples/gui/analogclock/analogclock.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "analogclock"
+ condition: Qt.gui.present
+ Depends { name: "Qt.gui"; required: false }
+ cpp.includePaths: base.concat("../rasterwindow")
+ files: [
+ "../rasterwindow/rasterwindow.cpp",
+ "../rasterwindow/rasterwindow.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "gui", "analogclock")
+ }
+}
diff --git a/examples/gui/gui.qbs b/examples/gui/gui.qbs
new file mode 100644
index 0000000000..a924923d58
--- /dev/null
+++ b/examples/gui/gui.qbs
@@ -0,0 +1,10 @@
+import qbs
+
+Project {
+ name: "gui"
+ references: [
+ "analogclock",
+ "rasterwindow",
+ "openglwindow",
+ ]
+}
diff --git a/examples/gui/openglwindow/openglwindow.qbs b/examples/gui/openglwindow/openglwindow.qbs
new file mode 100644
index 0000000000..0dbe6e76d7
--- /dev/null
+++ b/examples/gui/openglwindow/openglwindow.qbs
@@ -0,0 +1,13 @@
+import qbs
+
+CppApplication {
+ name: "openglwindow"
+ condition: Qt.gui.present && (Qt.gui.config.opengl || Qt.gui.config.opengles2)
+ Depends { name: "Qt.gui"; required: false }
+ cpp.includePaths: base.concat(".")
+ files: [
+ "main.cpp",
+ "openglwindow.cpp",
+ "openglwindow.h",
+ ]
+}
diff --git a/examples/gui/rasterwindow/rasterwindow.qbs b/examples/gui/rasterwindow/rasterwindow.qbs
new file mode 100644
index 0000000000..7e051538d6
--- /dev/null
+++ b/examples/gui/rasterwindow/rasterwindow.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "rasterwindow"
+ condition: Qt.gui.present
+ Depends { name: "Qt.gui"; required: false }
+ cpp.includePaths: base.concat(".")
+ files: [
+ "main.cpp",
+ "rasterwindow.cpp",
+ "rasterwindow.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "gui", "rasterwindow")
+ }
+}
diff --git a/examples/imports/CppApplication.qbs b/examples/imports/CppApplication.qbs
new file mode 100644
index 0000000000..baa4b8ac89
--- /dev/null
+++ b/examples/imports/CppApplication.qbs
@@ -0,0 +1,4 @@
+import qbs
+
+QtExample {
+}
diff --git a/examples/imports/DynamicLibrary.qbs b/examples/imports/DynamicLibrary.qbs
new file mode 100644
index 0000000000..0e4bf63139
--- /dev/null
+++ b/examples/imports/DynamicLibrary.qbs
@@ -0,0 +1,5 @@
+import qbs
+
+QtExample {
+ type: ["dynamiclibrary"]
+}
diff --git a/examples/imports/StaticLibrary.qbs b/examples/imports/StaticLibrary.qbs
new file mode 100644
index 0000000000..e7ab0fca22
--- /dev/null
+++ b/examples/imports/StaticLibrary.qbs
@@ -0,0 +1,5 @@
+import qbs
+
+QtExample {
+ type: ["staticlibrary"]
+}
diff --git a/examples/network/bearermonitor/bearermonitor.qbs b/examples/network/bearermonitor/bearermonitor.qbs
new file mode 100644
index 0000000000..2309807c1a
--- /dev/null
+++ b/examples/network/bearermonitor/bearermonitor.qbs
@@ -0,0 +1,34 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "bearermonitor"
+ condition: Qt.network.present && Qt.widgets.present && Qt.network.config.bearermanagement
+ && Qt.widgets.config.treeview
+ consoleApplication: true
+
+ Depends { name: "Qt.network"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "bearermonitor.cpp",
+ "bearermonitor.h",
+ "bearermonitor_240_320.ui",
+ "bearermonitor_640_480.ui",
+ "main.cpp",
+ "sessionwidget.cpp",
+ "sessionwidget.h",
+ "sessionwidget.ui",
+ ]
+
+ Properties {
+ condition: qbs.targetOS.contains("windows")
+ cpp.dynamicLibraries: base.concat("ws2_32")
+ }
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "network", "bearermonitor")
+ }
+}
diff --git a/examples/network/blockingfortuneclient/blockingfortuneclient.qbs b/examples/network/blockingfortuneclient/blockingfortuneclient.qbs
new file mode 100644
index 0000000000..773ecdf1c8
--- /dev/null
+++ b/examples/network/blockingfortuneclient/blockingfortuneclient.qbs
@@ -0,0 +1,25 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "blockingfortuneclient"
+ condition: Qt.network.present && Qt.widgets.present
+
+ Depends { name: "Qt.network"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "blockingclient.cpp",
+ "blockingclient.h",
+ "fortunethread.cpp",
+ "fortunethread.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "network",
+ "blockingfortuneclient")
+ }
+}
diff --git a/examples/network/broadcastreceiver/broadcastreceiver.qbs b/examples/network/broadcastreceiver/broadcastreceiver.qbs
new file mode 100644
index 0000000000..b6545ba449
--- /dev/null
+++ b/examples/network/broadcastreceiver/broadcastreceiver.qbs
@@ -0,0 +1,23 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "broadcastreceiver"
+ condition: Qt.network.present && Qt.widgets.present && Qt.network.config.udpsocket
+
+ Depends { name: "Qt.network"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "receiver.cpp",
+ "receiver.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "network",
+ "broadcastreceiver")
+ }
+}
diff --git a/examples/network/broadcastsender/broadcastsender.qbs b/examples/network/broadcastsender/broadcastsender.qbs
new file mode 100644
index 0000000000..01ab8ad2d3
--- /dev/null
+++ b/examples/network/broadcastsender/broadcastsender.qbs
@@ -0,0 +1,23 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "broadcastsender"
+ condition: Qt.network.present && Qt.widgets.present && Qt.network.config.udpsocket
+
+ Depends { name: "Qt.network"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "sender.cpp",
+ "sender.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "network",
+ "broadcastsender")
+ }
+}
diff --git a/examples/network/dnslookup/dnslookup.qbs b/examples/network/dnslookup/dnslookup.qbs
new file mode 100644
index 0000000000..1b2799f540
--- /dev/null
+++ b/examples/network/dnslookup/dnslookup.qbs
@@ -0,0 +1,21 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "dnslookup"
+ condition: Qt.network.present
+ consoleApplication: true
+
+ Depends { name: "Qt.network"; required: false }
+
+ files: [
+ "dnslookup.cpp",
+ "dnslookup.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "network", "dnslookup")
+ }
+}
diff --git a/examples/network/download/download.qbs b/examples/network/download/download.qbs
new file mode 100644
index 0000000000..b63fbb7078
--- /dev/null
+++ b/examples/network/download/download.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "download"
+ condition: Qt.network.present
+ consoleApplication: true
+
+ Depends { name: "Qt.network"; required: false }
+
+ files: [
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "network", "download")
+ }
+}
diff --git a/examples/network/downloadmanager/downloadmanager.qbs b/examples/network/downloadmanager/downloadmanager.qbs
new file mode 100644
index 0000000000..1eea85941b
--- /dev/null
+++ b/examples/network/downloadmanager/downloadmanager.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "downloadmanager"
+ condition: Qt.network.present
+ consoleApplication: true
+
+ Depends { name: "Qt.network"; required: false }
+
+ files: [
+ "downloadmanager.cpp",
+ "downloadmanager.h",
+ "main.cpp",
+ "textprogressbar.cpp",
+ "textprogressbar.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "network", "downloadmanager")
+ }
+}
diff --git a/examples/network/fortuneclient/fortuneclient.qbs b/examples/network/fortuneclient/fortuneclient.qbs
new file mode 100644
index 0000000000..11f933c40b
--- /dev/null
+++ b/examples/network/fortuneclient/fortuneclient.qbs
@@ -0,0 +1,23 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "fortuneclient"
+ condition: Qt.network.present && Qt.widgets.present && Qt.network.config.bearermanagement
+ && Qt.widgets.config.combobox
+
+ Depends { name: "Qt.network"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "client.cpp",
+ "client.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "network", "fortuneclient")
+ }
+}
diff --git a/examples/network/fortuneserver/fortuneserver.qbs b/examples/network/fortuneserver/fortuneserver.qbs
new file mode 100644
index 0000000000..3863cb65b7
--- /dev/null
+++ b/examples/network/fortuneserver/fortuneserver.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "fortuneserver"
+ condition: Qt.network.present && Qt.widgets.present && Qt.network.config.bearermanagement
+
+ Depends { name: "Qt.network"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "server.cpp",
+ "server.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "network", "fortuneserver")
+ }
+}
diff --git a/examples/network/googlesuggest/googlesuggest.qbs b/examples/network/googlesuggest/googlesuggest.qbs
new file mode 100644
index 0000000000..348d5c5cca
--- /dev/null
+++ b/examples/network/googlesuggest/googlesuggest.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "googlesuggest"
+ condition: Qt.network.present && Qt.widgets.present && Qt.widgets.config.itemviews
+
+ Depends { name: "Qt.network"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "googlesuggest.cpp",
+ "googlesuggest.h",
+ "main.cpp",
+ "searchbox.cpp",
+ "searchbox.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "network", "googlesuggest")
+ }
+}
diff --git a/examples/network/http/http.qbs b/examples/network/http/http.qbs
new file mode 100644
index 0000000000..9e10ea9f5f
--- /dev/null
+++ b/examples/network/http/http.qbs
@@ -0,0 +1,23 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "http"
+ condition: Qt.network.present && Qt.widgets.present
+
+ Depends { name: "Qt.network"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "authenticationdialog.ui",
+ "httpwindow.cpp",
+ "httpwindow.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "network", "http")
+ }
+}
diff --git a/examples/network/loopback/loopback.qbs b/examples/network/loopback/loopback.qbs
new file mode 100644
index 0000000000..cd72d028a2
--- /dev/null
+++ b/examples/network/loopback/loopback.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "loopback"
+ condition: Qt.network.present && Qt.widgets.present
+
+ Depends { name: "Qt.network"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "dialog.cpp",
+ "dialog.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "network", "loopback")
+ }
+}
diff --git a/examples/network/multicastreceiver/multicastreceiver.qbs b/examples/network/multicastreceiver/multicastreceiver.qbs
new file mode 100644
index 0000000000..e6eb89fb69
--- /dev/null
+++ b/examples/network/multicastreceiver/multicastreceiver.qbs
@@ -0,0 +1,23 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "multicastreceiver"
+ condition: Qt.network.present && Qt.widgets.present && Qt.network.config.udpsocket
+
+ Depends { name: "Qt.network"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "receiver.cpp",
+ "receiver.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "network",
+ "multicastreceiver")
+ }
+}
diff --git a/examples/network/multicastsender/multicastsender.qbs b/examples/network/multicastsender/multicastsender.qbs
new file mode 100644
index 0000000000..b65b8badca
--- /dev/null
+++ b/examples/network/multicastsender/multicastsender.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "multicastsender"
+ condition: Qt.network.present && Qt.widgets.present && Qt.network.config.udpsocket
+
+ Depends { name: "Qt.network"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "sender.cpp",
+ "sender.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "network", "multicastsender")
+ }
+}
diff --git a/examples/network/multistreamclient/multistreamclient.qbs b/examples/network/multistreamclient/multistreamclient.qbs
new file mode 100644
index 0000000000..e238459783
--- /dev/null
+++ b/examples/network/multistreamclient/multistreamclient.qbs
@@ -0,0 +1,30 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "multistreamclient"
+ condition: Qt.network.present && Qt.widgets.present && Qt.network.config.sctp
+
+ Depends { name: "Qt.network"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "chatconsumer.cpp",
+ "chatconsumer.h",
+ "client.cpp",
+ "client.h",
+ "consumer.h",
+ "main.cpp",
+ "movieconsumer.cpp",
+ "movieconsumer.h",
+ "timeconsumer.cpp",
+ "timeconsumer.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "network",
+ "multistreamclient")
+ }
+}
diff --git a/examples/network/multistreamserver/multistreamserver.qbs b/examples/network/multistreamserver/multistreamserver.qbs
new file mode 100644
index 0000000000..93a4b08432
--- /dev/null
+++ b/examples/network/multistreamserver/multistreamserver.qbs
@@ -0,0 +1,31 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "multistreamserver"
+ condition: Qt.network.present && Qt.widgets.present && Qt.network.config.sctp
+
+ Depends { name: "Qt.network"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "animation.gif",
+ "chatprovider.cpp",
+ "chatprovider.h",
+ "main.cpp",
+ "movieprovider.cpp",
+ "movieprovider.h",
+ "provider.h",
+ "server.cpp",
+ "server.h",
+ "timeprovider.cpp",
+ "timeprovider.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "network",
+ "multistreamserver")
+ }
+}
diff --git a/examples/network/network-chat/network-chat.qbs b/examples/network/network-chat/network-chat.qbs
new file mode 100644
index 0000000000..c2f65e8d72
--- /dev/null
+++ b/examples/network/network-chat/network-chat.qbs
@@ -0,0 +1,34 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "network-chat"
+ condition: Qt.network.present && Qt.widgets.present && Qt.core.config.processenvironment
+ && Qt.network.config.bearermanagement && Qt.network.config.udpsocket
+ && Qt.widgets.config.listwidget
+
+ Depends { name: "Qt.core" }
+ Depends { name: "Qt.network"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "chatdialog.cpp",
+ "chatdialog.h",
+ "chatdialog.ui",
+ "client.cpp",
+ "client.h",
+ "connection.cpp",
+ "connection.h",
+ "main.cpp",
+ "peermanager.cpp",
+ "peermanager.h",
+ "server.cpp",
+ "server.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "network", "network-chat")
+ }
+}
diff --git a/examples/network/network.qbs b/examples/network/network.qbs
new file mode 100644
index 0000000000..10c994f083
--- /dev/null
+++ b/examples/network/network.qbs
@@ -0,0 +1,27 @@
+import qbs
+
+Project {
+ name: "network"
+ references: [
+ "bearermonitor",
+ "blockingfortuneclient",
+ "broadcastreceiver",
+ "broadcastsender",
+ "dnslookup",
+ "download",
+ "downloadmanager",
+ "fortuneclient",
+ "fortuneserver",
+ "googlesuggest",
+ "http",
+ "loopback",
+ "multicastreceiver",
+ "multicastsender",
+ "multistreamclient",
+ "multistreamserver",
+ "network-chat",
+ "securesocketclient",
+ "threadedfortuneserver",
+ "torrent",
+ ]
+}
diff --git a/examples/network/securesocketclient/securesocketclient.qbs b/examples/network/securesocketclient/securesocketclient.qbs
new file mode 100644
index 0000000000..7b093a31ab
--- /dev/null
+++ b/examples/network/securesocketclient/securesocketclient.qbs
@@ -0,0 +1,30 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "securesocketclient"
+ condition: Qt.network.present && Qt.widgets.present && Qt.network.config.openssl
+ && Qt.widgets.config.combobox && Qt.widgets.config.listwidget
+
+ Depends { name: "Qt.network"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "certificateinfo.cpp",
+ "certificateinfo.h",
+ "certificateinfo.ui",
+ "main.cpp",
+ "securesocketclient.qrc",
+ "sslclient.cpp",
+ "sslclient.h",
+ "sslclient.ui",
+ "sslerrors.ui",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "network",
+ "securesocketclient")
+ }
+}
diff --git a/examples/network/threadedfortuneserver/threadedfortuneserver.qbs b/examples/network/threadedfortuneserver/threadedfortuneserver.qbs
new file mode 100644
index 0000000000..0910567185
--- /dev/null
+++ b/examples/network/threadedfortuneserver/threadedfortuneserver.qbs
@@ -0,0 +1,27 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "threadedfortuneserver"
+ condition: Qt.network.present && Qt.widgets.present
+
+ Depends { name: "Qt.network"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "dialog.cpp",
+ "dialog.h",
+ "fortuneserver.cpp",
+ "fortuneserver.h",
+ "fortunethread.cpp",
+ "fortunethread.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "network",
+ "threadedfortuneserver")
+ }
+}
diff --git a/examples/network/torrent/torrent.qbs b/examples/network/torrent/torrent.qbs
new file mode 100644
index 0000000000..cd1779f55f
--- /dev/null
+++ b/examples/network/torrent/torrent.qbs
@@ -0,0 +1,44 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "torrent"
+ condition: Qt.network.present && Qt.widgets.present && Qt.widgets.config.filedialog
+
+ Depends { name: "Qt.network"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "addtorrentdialog.cpp",
+ "addtorrentdialog.h",
+ "bencodeparser.cpp",
+ "bencodeparser.h",
+ "connectionmanager.cpp",
+ "connectionmanager.h",
+ "filemanager.cpp",
+ "filemanager.h",
+ "forms/addtorrentform.ui",
+ "icons.qrc",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "metainfo.cpp",
+ "metainfo.h",
+ "peerwireclient.cpp",
+ "peerwireclient.h",
+ "ratecontroller.cpp",
+ "ratecontroller.h",
+ "torrentclient.cpp",
+ "torrentclient.h",
+ "torrentserver.cpp",
+ "torrentserver.h",
+ "trackerclient.cpp",
+ "trackerclient.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "network", "torrent")
+ }
+}
diff --git a/examples/opengl/2dpainting/2dpainting.qbs b/examples/opengl/2dpainting/2dpainting.qbs
new file mode 100644
index 0000000000..f245996efc
--- /dev/null
+++ b/examples/opengl/2dpainting/2dpainting.qbs
@@ -0,0 +1,28 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "2dpainting"
+ condition: Qt.widgets.present && Qt.gui.config.opengl
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "glwidget.cpp",
+ "glwidget.h",
+ "helper.cpp",
+ "helper.h",
+ "main.cpp",
+ "widget.cpp",
+ "widget.h",
+ "window.cpp",
+ "window.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "opengl", "2dpainting")
+ }
+}
diff --git a/examples/opengl/contextinfo/contextinfo.qbs b/examples/opengl/contextinfo/contextinfo.qbs
new file mode 100644
index 0000000000..7a42c3b438
--- /dev/null
+++ b/examples/opengl/contextinfo/contextinfo.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "contextinfo"
+ condition: Qt.widgets.present && Qt.gui.config.opengl
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "renderwindow.cpp",
+ "renderwindow.h",
+ "widget.cpp",
+ "widget.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "opengl", "contextinfo")
+ }
+}
diff --git a/examples/opengl/cube/cube.qbs b/examples/opengl/cube/cube.qbs
new file mode 100644
index 0000000000..88df75e35c
--- /dev/null
+++ b/examples/opengl/cube/cube.qbs
@@ -0,0 +1,26 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "cube"
+ condition: Qt.widgets.present && Qt.gui.config.opengl
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "geometryengine.cpp",
+ "geometryengine.h",
+ "main.cpp",
+ "mainwidget.cpp",
+ "mainwidget.h",
+ "shaders.qrc",
+ "textures.qrc",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "opengl", "cube")
+ }
+}
diff --git a/examples/opengl/hellogl2/hellogl2.qbs b/examples/opengl/hellogl2/hellogl2.qbs
new file mode 100644
index 0000000000..3d15addd64
--- /dev/null
+++ b/examples/opengl/hellogl2/hellogl2.qbs
@@ -0,0 +1,28 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "hellogl2"
+ condition: Qt.widgets.present && Qt.gui.config.opengl
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "glwidget.cpp",
+ "glwidget.h",
+ "logo.cpp",
+ "logo.h",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "window.cpp",
+ "window.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "opengl", "hellogl2")
+ }
+}
diff --git a/examples/opengl/hellogles3/hellogles3.qbs b/examples/opengl/hellogles3/hellogles3.qbs
new file mode 100644
index 0000000000..dbe1b58432
--- /dev/null
+++ b/examples/opengl/hellogles3/hellogles3.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "hellogles3"
+ condition: Qt.gui.present && Qt.gui.config.opengl
+
+ Depends { name: "Qt.gui"; required: false }
+
+ files: [
+ "../hellogl2/logo.cpp",
+ "../hellogl2/logo.h",
+ "glwindow.cpp",
+ "glwindow.h",
+ "hellogles3.qrc",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "opengl", "hellogles3")
+ }
+}
diff --git a/examples/opengl/hellowindow/hellowindow.qbs b/examples/opengl/hellowindow/hellowindow.qbs
new file mode 100644
index 0000000000..9f1ba84dd2
--- /dev/null
+++ b/examples/opengl/hellowindow/hellowindow.qbs
@@ -0,0 +1,23 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "hellowindow"
+ condition: Qt.gui.present && Qt.gui.config.opengl
+
+ Depends { name: "Qt.core-private" }
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.gui-private"; required: false }
+
+ files: [
+ "hellowindow.cpp",
+ "hellowindow.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "opengl", "hellowindow")
+ }
+}
diff --git a/examples/opengl/opengl.qbs b/examples/opengl/opengl.qbs
new file mode 100644
index 0000000000..980bf647c5
--- /dev/null
+++ b/examples/opengl/opengl.qbs
@@ -0,0 +1,19 @@
+import qbs
+
+Project {
+ name: "opengl"
+
+ references: [
+ "2dpainting",
+ "contextinfo",
+ "cube",
+ "hellogl2",
+ "hellogles3",
+ "hellowindow",
+ "paintedwindow",
+ "qopenglwidget",
+ "qopenglwindow",
+ "textures",
+ "threadedqopenglwidget",
+ ]
+}
diff --git a/examples/opengl/paintedwindow/paintedwindow.qbs b/examples/opengl/paintedwindow/paintedwindow.qbs
new file mode 100644
index 0000000000..91d3bd28f3
--- /dev/null
+++ b/examples/opengl/paintedwindow/paintedwindow.qbs
@@ -0,0 +1,21 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "paintedwindow"
+ condition: Qt.gui.present && Qt.gui.config.opengl
+
+ Depends { name: "Qt.gui"; required: false }
+
+ files: [
+ "main.cpp",
+ "paintedwindow.cpp",
+ "paintedwindow.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "opengl", "paintedwindow")
+ }
+}
diff --git a/examples/opengl/qopenglwidget/qopenglwidget.qbs b/examples/opengl/qopenglwidget/qopenglwidget.qbs
new file mode 100644
index 0000000000..214e74678d
--- /dev/null
+++ b/examples/opengl/qopenglwidget/qopenglwidget.qbs
@@ -0,0 +1,27 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "qopenglwidget"
+ condition: Qt.widgets.present && Qt.gui.config.opengl
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "bubble.cpp",
+ "bubble.h",
+ "glwidget.cpp",
+ "glwidget.h",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "texture.qrc",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "opengl", "qopenglwidget")
+ }
+}
diff --git a/examples/opengl/qopenglwindow/qopenglwindow.qbs b/examples/opengl/qopenglwindow/qopenglwindow.qbs
new file mode 100644
index 0000000000..4bcfb0d730
--- /dev/null
+++ b/examples/opengl/qopenglwindow/qopenglwindow.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "qopenglwindow"
+ condition: Qt.gui.present && Qt.gui.config.opengl
+
+ Depends { name: "Qt.gui"; required: false }
+
+ cpp.includePaths: base.concat(".")
+
+ files: [
+ "background_renderer.cpp",
+ "background_renderer.h",
+ "main.cpp",
+ "shaders.qrc",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "opengl", "qopenglwindow")
+ }
+}
diff --git a/examples/opengl/textures/textures.qbs b/examples/opengl/textures/textures.qbs
new file mode 100644
index 0000000000..be603b3884
--- /dev/null
+++ b/examples/opengl/textures/textures.qbs
@@ -0,0 +1,25 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "textures"
+ condition: Qt.widgets.present && Qt.gui.config.opengl
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "glwidget.cpp",
+ "glwidget.h",
+ "main.cpp",
+ "textures.qrc",
+ "window.cpp",
+ "window.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "opengl", "textures")
+ }
+}
diff --git a/examples/opengl/threadedqopenglwidget/threadedqopenglwidget.qbs b/examples/opengl/threadedqopenglwidget/threadedqopenglwidget.qbs
new file mode 100644
index 0000000000..d48e10ebb5
--- /dev/null
+++ b/examples/opengl/threadedqopenglwidget/threadedqopenglwidget.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "threadedqopenglwidget"
+ condition: Qt.widgets.present && Qt.gui.config.opengl
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "glwidget.cpp",
+ "glwidget.h",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "opengl", "threadedqopenglwidget")
+ }
+}
diff --git a/examples/qtconcurrent/imagescaling/imagescaling.qbs b/examples/qtconcurrent/imagescaling/imagescaling.qbs
new file mode 100644
index 0000000000..01289cf8e6
--- /dev/null
+++ b/examples/qtconcurrent/imagescaling/imagescaling.qbs
@@ -0,0 +1,23 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "imagescaling"
+ condition: Qt.concurrent.present && Qt.widgets.present && Qt.widgets.config.filedialog
+
+ Depends { name: "Qt.concurrent"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "imagescaling.cpp",
+ "imagescaling.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "qtconcurrent",
+ "imagescaling")
+ }
+}
diff --git a/examples/qtconcurrent/map/map.qbs b/examples/qtconcurrent/map/map.qbs
new file mode 100644
index 0000000000..2e76e8f04d
--- /dev/null
+++ b/examples/qtconcurrent/map/map.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "mapdemo"
+ condition: Qt.concurrent.present && Qt.gui.present
+ consoleApplication: true
+
+ Depends { name: "Qt.concurrent"; required: false }
+ Depends { name: "Qt.gui"; required: false }
+
+ files: [
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "qtconcurrent",
+ "map")
+ }
+}
diff --git a/examples/qtconcurrent/progressdialog/progressdialog.qbs b/examples/qtconcurrent/progressdialog/progressdialog.qbs
new file mode 100644
index 0000000000..53b477f37c
--- /dev/null
+++ b/examples/qtconcurrent/progressdialog/progressdialog.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "progressdialog"
+ condition: Qt.concurrent.present && Qt.widgets.present
+ consoleApplication: true
+
+ Depends { name: "Qt.concurrent"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "qtconcurrent",
+ "progressdialog")
+ }
+}
diff --git a/examples/qtconcurrent/qtconcurrent.qbs b/examples/qtconcurrent/qtconcurrent.qbs
new file mode 100644
index 0000000000..ca9732cc5d
--- /dev/null
+++ b/examples/qtconcurrent/qtconcurrent.qbs
@@ -0,0 +1,12 @@
+import qbs
+
+Project {
+ name: "qtconcurrent"
+ references: [
+ "imagescaling",
+ "map",
+ "progressdialog",
+ "runfunction",
+ "wordcount",
+ ]
+}
diff --git a/examples/qtconcurrent/runfunction/runfunction.qbs b/examples/qtconcurrent/runfunction/runfunction.qbs
new file mode 100644
index 0000000000..d20ddd08b6
--- /dev/null
+++ b/examples/qtconcurrent/runfunction/runfunction.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "runfunction"
+ condition: Qt.concurrent.present && Qt.widgets.present
+ consoleApplication: true
+
+ Depends { name: "Qt.concurrent"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "qtconcurrent",
+ "runfunction")
+ }
+}
diff --git a/examples/qtconcurrent/wordcount/wordcount.qbs b/examples/qtconcurrent/wordcount/wordcount.qbs
new file mode 100644
index 0000000000..142db65a87
--- /dev/null
+++ b/examples/qtconcurrent/wordcount/wordcount.qbs
@@ -0,0 +1,23 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "wordcount"
+
+ condition: Qt.concurrent.present && Qt.widgets.present
+ consoleApplication: true
+
+ Depends { name: "Qt.concurrent"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "qtconcurrent",
+ "wordcount")
+ }
+}
diff --git a/examples/qtestlib/qtestlib.qbs b/examples/qtestlib/qtestlib.qbs
new file mode 100644
index 0000000000..73835c20d3
--- /dev/null
+++ b/examples/qtestlib/qtestlib.qbs
@@ -0,0 +1,11 @@
+import qbs
+
+Project {
+ references: [
+ "tutorial1",
+ "tutorial2",
+ "tutorial3",
+ "tutorial4",
+ "tutorial5",
+ ]
+}
diff --git a/examples/qtestlib/tutorial1/tutorial1.qbs b/examples/qtestlib/tutorial1/tutorial1.qbs
new file mode 100644
index 0000000000..426da623df
--- /dev/null
+++ b/examples/qtestlib/tutorial1/tutorial1.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "tutorial1"
+ condition: Qt.testlib.present && Qt.widgets.present
+
+ Depends { name: "Qt.testlib"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "testqstring.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "qtestlib", "tutorial1")
+ }
+}
diff --git a/examples/qtestlib/tutorial2/tutorial2.qbs b/examples/qtestlib/tutorial2/tutorial2.qbs
new file mode 100644
index 0000000000..e8a42abaac
--- /dev/null
+++ b/examples/qtestlib/tutorial2/tutorial2.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "tutorial2"
+ condition: Qt.testlib.present && Qt.widgets.present
+
+ Depends { name: "Qt.testlib"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "testqstring.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "qtestlib", "tutorial2")
+ }
+}
diff --git a/examples/qtestlib/tutorial3/tutorial3.qbs b/examples/qtestlib/tutorial3/tutorial3.qbs
new file mode 100644
index 0000000000..8746191180
--- /dev/null
+++ b/examples/qtestlib/tutorial3/tutorial3.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "tutorial3"
+ condition: Qt.testlib.present && Qt.widgets.present
+
+ Depends { name: "Qt.testlib"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "testgui.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "qtestlib", "tutorial3")
+ }
+}
diff --git a/examples/qtestlib/tutorial4/tutorial4.qbs b/examples/qtestlib/tutorial4/tutorial4.qbs
new file mode 100644
index 0000000000..1df4a66061
--- /dev/null
+++ b/examples/qtestlib/tutorial4/tutorial4.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "tutorial4"
+ condition: Qt.testlib.present && Qt.widgets.present
+
+ Depends { name: "Qt.testlib"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "testgui.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "qtestlib", "tutorial4")
+ }
+}
diff --git a/examples/qtestlib/tutorial5/tutorial5.qbs b/examples/qtestlib/tutorial5/tutorial5.qbs
new file mode 100644
index 0000000000..0d2e2532e1
--- /dev/null
+++ b/examples/qtestlib/tutorial5/tutorial5.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "tutorial5"
+ condition: Qt.testlib.present && Qt.widgets.present
+
+ Depends { name: "Qt.testlib"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "benchmarking.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "qtestlib", "tutorial5")
+ }
+}
diff --git a/examples/widgets/animation/animatedtiles/animatedtiles.qbs b/examples/widgets/animation/animatedtiles/animatedtiles.qbs
new file mode 100644
index 0000000000..358ff79f79
--- /dev/null
+++ b/examples/widgets/animation/animatedtiles/animatedtiles.qbs
@@ -0,0 +1,21 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "animatedtiles"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "animatedtiles.qrc",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "animation",
+ "animated-tiles")
+ }
+}
diff --git a/examples/widgets/animation/animation.qbs b/examples/widgets/animation/animation.qbs
new file mode 100644
index 0000000000..07470f6cd7
--- /dev/null
+++ b/examples/widgets/animation/animation.qbs
@@ -0,0 +1,13 @@
+import qbs
+
+Project {
+ name: "animation"
+ references: [
+ "animatedtiles",
+ "easing",
+ "moveblocks",
+ "states",
+ "stickman",
+ "sub-attaq",
+ ]
+}
diff --git a/examples/widgets/animation/easing/easing.qbs b/examples/widgets/animation/easing/easing.qbs
new file mode 100644
index 0000000000..0d3bb6c391
--- /dev/null
+++ b/examples/widgets/animation/easing/easing.qbs
@@ -0,0 +1,25 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "easing"
+ condition: Qt.widgets.present && Qt.widgets.config.listwidget
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "animation.h",
+ "easing.qrc",
+ "form.ui",
+ "main.cpp",
+ "window.cpp",
+ "window.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "animation",
+ "easing")
+ }
+}
diff --git a/examples/widgets/animation/moveblocks/moveblocks.qbs b/examples/widgets/animation/moveblocks/moveblocks.qbs
new file mode 100644
index 0000000000..87ce94b6c5
--- /dev/null
+++ b/examples/widgets/animation/moveblocks/moveblocks.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "moveblocks"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "animation",
+ "moveblocks")
+ }
+}
diff --git a/examples/widgets/animation/states/states.qbs b/examples/widgets/animation/states/states.qbs
new file mode 100644
index 0000000000..447d81643c
--- /dev/null
+++ b/examples/widgets/animation/states/states.qbs
@@ -0,0 +1,21 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "states"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "states.qrc",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "animation",
+ "states")
+ }
+}
diff --git a/examples/widgets/animation/stickman/stickman.qbs b/examples/widgets/animation/stickman/stickman.qbs
new file mode 100644
index 0000000000..706ccd1840
--- /dev/null
+++ b/examples/widgets/animation/stickman/stickman.qbs
@@ -0,0 +1,33 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "stickman"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "animation.cpp",
+ "animation.h",
+ "graphicsview.cpp",
+ "graphicsview.h",
+ "lifecycle.cpp",
+ "lifecycle.h",
+ "main.cpp",
+ "node.cpp",
+ "node.h",
+ "rectbutton.cpp",
+ "rectbutton.h",
+ "stickman.cpp",
+ "stickman.h",
+ "stickman.qrc",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "animation",
+ "stickman")
+ }
+}
diff --git a/examples/widgets/animation/sub-attaq/sub-attaq.qbs b/examples/widgets/animation/sub-attaq/sub-attaq.qbs
new file mode 100644
index 0000000000..dccb2af2c3
--- /dev/null
+++ b/examples/widgets/animation/sub-attaq/sub-attaq.qbs
@@ -0,0 +1,48 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "sub-attaq"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.opengl"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "animationmanager.cpp",
+ "animationmanager.h",
+ "boat.cpp",
+ "boat.h",
+ "boat_p.h",
+ "bomb.cpp",
+ "bomb.h",
+ "graphicsscene.cpp",
+ "graphicsscene.h",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "pixmapitem.cpp",
+ "pixmapitem.h",
+ "progressitem.cpp",
+ "progressitem.h",
+ "qanimationstate.cpp",
+ "qanimationstate.h",
+ "states.cpp",
+ "states.h",
+ "subattaq.qrc",
+ "submarine.cpp",
+ "submarine.h",
+ "submarine_p.h",
+ "textinformationitem.cpp",
+ "textinformationitem.h",
+ "torpedo.cpp",
+ "torpedo.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "animation",
+ "sub-attaq")
+ }
+}
diff --git a/examples/widgets/desktop/desktop.qbs b/examples/widgets/desktop/desktop.qbs
new file mode 100644
index 0000000000..5163ff3ef8
--- /dev/null
+++ b/examples/widgets/desktop/desktop.qbs
@@ -0,0 +1,9 @@
+import qbs
+
+Project {
+ name: "desktop"
+ references: [
+ "screenshot",
+ "systray",
+ ]
+}
diff --git a/examples/widgets/desktop/screenshot/screenshot.qbs b/examples/widgets/desktop/screenshot/screenshot.qbs
new file mode 100644
index 0000000000..c50f88ed79
--- /dev/null
+++ b/examples/widgets/desktop/screenshot/screenshot.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "screenshot"
+ condition: Qt.widgets.present && Qt.widgets.config.filedialog
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "screenshot.cpp",
+ "screenshot.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "desktop",
+ "screenshot")
+ }
+}
diff --git a/examples/widgets/desktop/systray/systray.qbs b/examples/widgets/desktop/systray/systray.qbs
new file mode 100644
index 0000000000..0b069fff60
--- /dev/null
+++ b/examples/widgets/desktop/systray/systray.qbs
@@ -0,0 +1,23 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "systray"
+ condition: Qt.widgets.present && Qt.widgets.config.combobox
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "systray.qrc",
+ "window.cpp",
+ "window.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "desktop",
+ "systray")
+ }
+}
diff --git a/examples/widgets/dialogs/classwizard/classwizard.qbs b/examples/widgets/dialogs/classwizard/classwizard.qbs
new file mode 100644
index 0000000000..eb50140232
--- /dev/null
+++ b/examples/widgets/dialogs/classwizard/classwizard.qbs
@@ -0,0 +1,23 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "classwizard"
+ condition: Qt.widgets.present && Qt.widgets.config.wizard
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "classwizard.cpp",
+ "classwizard.h",
+ "classwizard.qrc",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "dialogs",
+ "classwizard")
+ }
+}
diff --git a/examples/widgets/dialogs/dialogs.qbs b/examples/widgets/dialogs/dialogs.qbs
new file mode 100644
index 0000000000..1bf1b3b4ee
--- /dev/null
+++ b/examples/widgets/dialogs/dialogs.qbs
@@ -0,0 +1,14 @@
+import qbs
+
+Project {
+ name: "dialogs"
+ references: [
+ "classwizard",
+ "extension",
+ "findfiles",
+ "licensewizard",
+ "standarddialogs",
+ "tabdialog",
+ "trivialwizard",
+ ]
+}
diff --git a/examples/widgets/dialogs/extension/extension.qbs b/examples/widgets/dialogs/extension/extension.qbs
new file mode 100644
index 0000000000..c0cc6b7c55
--- /dev/null
+++ b/examples/widgets/dialogs/extension/extension.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "extension"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "finddialog.cpp",
+ "finddialog.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "dialogs",
+ "extension")
+ }
+}
diff --git a/examples/widgets/dialogs/findfiles/findfiles.qbs b/examples/widgets/dialogs/findfiles/findfiles.qbs
new file mode 100644
index 0000000000..682f5a98be
--- /dev/null
+++ b/examples/widgets/dialogs/findfiles/findfiles.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "findfiles"
+ condition: Qt.widgets.present && Qt.widgets.config.filedialog
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "window.cpp",
+ "window.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "dialogs",
+ "findfiles")
+ }
+}
diff --git a/examples/widgets/dialogs/licensewizard/licensewizard.qbs b/examples/widgets/dialogs/licensewizard/licensewizard.qbs
new file mode 100644
index 0000000000..516c2d6ac7
--- /dev/null
+++ b/examples/widgets/dialogs/licensewizard/licensewizard.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "licensewizard"
+ condition: Qt.printsupport.present && Qt.widgets.present && Qt.widgets.config.wizard
+
+ Depends { name: "Qt.printsupport"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "licensewizard.cpp",
+ "licensewizard.h",
+ "licensewizard.qrc",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "dialogs",
+ "licensewizard")
+ }
+}
diff --git a/examples/widgets/dialogs/standarddialogs/standarddialogs.qbs b/examples/widgets/dialogs/standarddialogs/standarddialogs.qbs
new file mode 100644
index 0000000000..958874c4f3
--- /dev/null
+++ b/examples/widgets/dialogs/standarddialogs/standarddialogs.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "standarddialogs"
+ condition: Qt.widgets.present && Qt.widgets.config.filedialog
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "dialog.cpp",
+ "dialog.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "dialogs",
+ "standarddialogs")
+ }
+}
diff --git a/examples/widgets/dialogs/tabdialog/tabdialog.qbs b/examples/widgets/dialogs/tabdialog/tabdialog.qbs
new file mode 100644
index 0000000000..dcfaf8ac6a
--- /dev/null
+++ b/examples/widgets/dialogs/tabdialog/tabdialog.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "tabdialog"
+ condition: Qt.widgets.present && Qt.widgets.config.filedialog
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "tabdialog.cpp",
+ "tabdialog.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "dialogs",
+ "tabdialog")
+ }
+}
diff --git a/examples/widgets/dialogs/trivialwizard/trivialwizard.qbs b/examples/widgets/dialogs/trivialwizard/trivialwizard.qbs
new file mode 100644
index 0000000000..6df8313e78
--- /dev/null
+++ b/examples/widgets/dialogs/trivialwizard/trivialwizard.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "trivialwizard"
+ condition: Qt.widgets.present && Qt.widgets.config.wizard
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "trivialwizard.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "dialogs",
+ "trivialwizard")
+ }
+}
diff --git a/examples/widgets/draganddrop/draganddrop.qbs b/examples/widgets/draganddrop/draganddrop.qbs
new file mode 100644
index 0000000000..dc914644e7
--- /dev/null
+++ b/examples/widgets/draganddrop/draganddrop.qbs
@@ -0,0 +1,12 @@
+import qbs
+
+Project {
+ name: "draganddrop"
+ references: [
+ "draggableicons",
+ "draggabletext",
+ "dropsite",
+ "fridgemagnets",
+ "puzzle",
+ ]
+}
diff --git a/examples/widgets/draganddrop/draggableicons/draggableicons.qbs b/examples/widgets/draganddrop/draggableicons/draggableicons.qbs
new file mode 100644
index 0000000000..396c02eda3
--- /dev/null
+++ b/examples/widgets/draganddrop/draggableicons/draggableicons.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "draggableicons"
+ condition: Qt.widgets.present && Qt.gui.config.draganddrop
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "draggableicons.qrc",
+ "dragwidget.cpp",
+ "dragwidget.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "draganddrop",
+ "draggableicons")
+ }
+}
diff --git a/examples/widgets/draganddrop/draggabletext/draggabletext.qbs b/examples/widgets/draganddrop/draggabletext/draggabletext.qbs
new file mode 100644
index 0000000000..4d4c39be3c
--- /dev/null
+++ b/examples/widgets/draganddrop/draggabletext/draggabletext.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "draggabletext"
+ condition: Qt.widgets.present && Qt.gui.config.draganddrop
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "draggabletext.qrc",
+ "dragwidget.cpp",
+ "dragwidget.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "draganddrop",
+ "draggabletext")
+ }
+}
diff --git a/examples/widgets/draganddrop/dropsite/dropsite.qbs b/examples/widgets/draganddrop/dropsite/dropsite.qbs
new file mode 100644
index 0000000000..af66727f71
--- /dev/null
+++ b/examples/widgets/draganddrop/dropsite/dropsite.qbs
@@ -0,0 +1,25 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "dropsite"
+ condition: Qt.widgets.present && Qt.gui.config.draganddrop
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "droparea.cpp",
+ "droparea.h",
+ "dropsitewindow.cpp",
+ "dropsitewindow.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "draganddrop",
+ "dropsite")
+ }
+}
diff --git a/examples/widgets/draganddrop/fridgemagnets/fridgemagnets.qbs b/examples/widgets/draganddrop/fridgemagnets/fridgemagnets.qbs
new file mode 100644
index 0000000000..dca9e4274d
--- /dev/null
+++ b/examples/widgets/draganddrop/fridgemagnets/fridgemagnets.qbs
@@ -0,0 +1,26 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "fridgemagnets"
+ condition: Qt.widgets.present && Qt.gui.config.draganddrop
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "draglabel.cpp",
+ "draglabel.h",
+ "dragwidget.cpp",
+ "dragwidget.h",
+ "fridgemagnets.qrc",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "draganddrop",
+ "fridgemagnets")
+ }
+}
diff --git a/examples/widgets/draganddrop/puzzle/puzzle.qbs b/examples/widgets/draganddrop/puzzle/puzzle.qbs
new file mode 100644
index 0000000000..7c40af3bcb
--- /dev/null
+++ b/examples/widgets/draganddrop/puzzle/puzzle.qbs
@@ -0,0 +1,30 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "draganddroppuzzle"
+ targetName: "puzzle"
+ condition: Qt.widgets.present && Qt.gui.config.draganddrop
+ && Qt.widgets.config.filedialog
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "pieceslist.cpp",
+ "pieceslist.h",
+ "puzzle.qrc",
+ "puzzlewidget.cpp",
+ "puzzlewidget.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "draganddrop",
+ "puzzle")
+ }
+}
diff --git a/examples/widgets/effects/blurpicker/blurpicker.qbs b/examples/widgets/effects/blurpicker/blurpicker.qbs
new file mode 100644
index 0000000000..133e7b7c12
--- /dev/null
+++ b/examples/widgets/effects/blurpicker/blurpicker.qbs
@@ -0,0 +1,25 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "blurpicker"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "blureffect.cpp",
+ "blureffect.h",
+ "blurpicker.cpp",
+ "blurpicker.h",
+ "blurpicker.qrc",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "effects",
+ "blurpicker")
+ }
+}
diff --git a/examples/widgets/effects/effects.qbs b/examples/widgets/effects/effects.qbs
new file mode 100644
index 0000000000..46e73675a8
--- /dev/null
+++ b/examples/widgets/effects/effects.qbs
@@ -0,0 +1,9 @@
+import qbs
+
+Project {
+ name: "effects"
+ references: [
+ "blurpicker",
+ "fademessage",
+ ]
+}
diff --git a/examples/widgets/effects/fademessage/fademessage.qbs b/examples/widgets/effects/fademessage/fademessage.qbs
new file mode 100644
index 0000000000..8f47d81b09
--- /dev/null
+++ b/examples/widgets/effects/fademessage/fademessage.qbs
@@ -0,0 +1,23 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "fademessage"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "fademessage.cpp",
+ "fademessage.h",
+ "fademessage.qrc",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "effects",
+ "fademessage")
+ }
+}
diff --git a/examples/widgets/gestures/gestures.qbs b/examples/widgets/gestures/gestures.qbs
new file mode 100644
index 0000000000..9a70ccb798
--- /dev/null
+++ b/examples/widgets/gestures/gestures.qbs
@@ -0,0 +1,8 @@
+import qbs
+
+Project {
+ name: "gestures"
+ references: [
+ "imagegestures",
+ ]
+}
diff --git a/examples/widgets/gestures/imagegestures/imagegestures.qbs b/examples/widgets/gestures/imagegestures/imagegestures.qbs
new file mode 100644
index 0000000000..c78dfbcb88
--- /dev/null
+++ b/examples/widgets/gestures/imagegestures/imagegestures.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "imagegestures"
+ condition: Qt.widgets.present && Qt.widgets.config.filedialog
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "imagewidget.cpp",
+ "imagewidget.h",
+ "main.cpp",
+ "mainwidget.cpp",
+ "mainwidget.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "gestures",
+ "imagegestures")
+ }
+}
diff --git a/examples/widgets/graphicsview/anchorlayout/anchorlayout.qbs b/examples/widgets/graphicsview/anchorlayout/anchorlayout.qbs
new file mode 100644
index 0000000000..1e30fa8ed2
--- /dev/null
+++ b/examples/widgets/graphicsview/anchorlayout/anchorlayout.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "anchorlayout"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "graphicsview",
+ "anchorlayout")
+ }
+}
diff --git a/examples/widgets/graphicsview/basicgraphicslayouts/basicgraphicslayouts.qbs b/examples/widgets/graphicsview/basicgraphicslayouts/basicgraphicslayouts.qbs
new file mode 100644
index 0000000000..52ad0a44fa
--- /dev/null
+++ b/examples/widgets/graphicsview/basicgraphicslayouts/basicgraphicslayouts.qbs
@@ -0,0 +1,25 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "basicgraphicslayouts"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "basicgraphicslayouts.qrc",
+ "layoutitem.cpp",
+ "layoutitem.h",
+ "main.cpp",
+ "window.cpp",
+ "window.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "graphicsview",
+ "basicgraphicslayout")
+ }
+}
diff --git a/examples/widgets/graphicsview/boxes/boxes.qbs b/examples/widgets/graphicsview/boxes/boxes.qbs
new file mode 100644
index 0000000000..4532b0bbda
--- /dev/null
+++ b/examples/widgets/graphicsview/boxes/boxes.qbs
@@ -0,0 +1,42 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "boxes"
+ condition: Qt.opengl.present && Qt.widgets.present
+ && !Qt.gui.config.opengles2 && !Qt.gui.config.opengles3
+ && !Qt.gui.config.opengles31 && !Qt.gui.config.opengles32
+ && !Qt.gui.config.angle && !Qt.gui.config.dynamicgl
+ && Qt.widgets.config.combobox
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.opengl"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "3rdparty/fbm.c",
+ "3rdparty/fbm.h",
+ "boxes.qrc",
+ "glbuffers.cpp",
+ "glbuffers.h",
+ "glextensions.cpp",
+ "glextensions.h",
+ "gltrianglemesh.h",
+ "main.cpp",
+ "qtbox.cpp",
+ "qtbox.h",
+ "roundedbox.cpp",
+ "roundedbox.h",
+ "scene.cpp",
+ "scene.h",
+ "trackball.cpp",
+ "trackball.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "graphicsview",
+ "boxes")
+ }
+}
diff --git a/examples/widgets/graphicsview/chip/chip.qbs b/examples/widgets/graphicsview/chip/chip.qbs
new file mode 100644
index 0000000000..854e5507ab
--- /dev/null
+++ b/examples/widgets/graphicsview/chip/chip.qbs
@@ -0,0 +1,29 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "chip"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.opengl"; required: false }
+ Depends { name: "Qt.printsupport"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "chip.cpp",
+ "chip.h",
+ "images.qrc",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "view.cpp",
+ "view.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "graphicsview",
+ "chip")
+ }
+}
diff --git a/examples/widgets/graphicsview/collidingmice/collidingmice.qbs b/examples/widgets/graphicsview/collidingmice/collidingmice.qbs
new file mode 100644
index 0000000000..a8d3b17d8a
--- /dev/null
+++ b/examples/widgets/graphicsview/collidingmice/collidingmice.qbs
@@ -0,0 +1,23 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "collidingmice"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "mice.qrc",
+ "mouse.cpp",
+ "mouse.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "graphicsview",
+ "collidingmice")
+ }
+}
diff --git a/examples/widgets/graphicsview/diagramscene/diagramscene.qbs b/examples/widgets/graphicsview/diagramscene/diagramscene.qbs
new file mode 100644
index 0000000000..d6f3ec73bc
--- /dev/null
+++ b/examples/widgets/graphicsview/diagramscene/diagramscene.qbs
@@ -0,0 +1,31 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "diagramscene"
+ condition: Qt.widgets.present && Qt.widgets.config.fontcombobox
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "arrow.cpp",
+ "arrow.h",
+ "diagramitem.cpp",
+ "diagramitem.h",
+ "diagramscene.cpp",
+ "diagramscene.h",
+ "diagramscene.qrc",
+ "diagramtextitem.cpp",
+ "diagramtextitem.h",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "graphicsview",
+ "diagramscene")
+ }
+}
diff --git a/examples/widgets/graphicsview/dragdroprobot/dragdroprobot.qbs b/examples/widgets/graphicsview/dragdroprobot/dragdroprobot.qbs
new file mode 100644
index 0000000000..f81b8ecb21
--- /dev/null
+++ b/examples/widgets/graphicsview/dragdroprobot/dragdroprobot.qbs
@@ -0,0 +1,26 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "dragdroprobot"
+ condition: Qt.widgets.present && Qt.gui.config.cursor && Qt.gui.config.draganddrop
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "coloritem.cpp",
+ "coloritem.h",
+ "main.cpp",
+ "robot.cpp",
+ "robot.h",
+ "robot.qrc",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "graphicsview",
+ "dragdroprobot")
+ }
+}
diff --git a/examples/widgets/graphicsview/elasticnodes/elasticnodes.qbs b/examples/widgets/graphicsview/elasticnodes/elasticnodes.qbs
new file mode 100644
index 0000000000..df820a8602
--- /dev/null
+++ b/examples/widgets/graphicsview/elasticnodes/elasticnodes.qbs
@@ -0,0 +1,26 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "elasticnodes"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "edge.cpp",
+ "edge.h",
+ "graphwidget.cpp",
+ "graphwidget.h",
+ "main.cpp",
+ "node.cpp",
+ "node.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "graphicsview",
+ "elasticnodes")
+ }
+}
diff --git a/examples/widgets/graphicsview/embeddeddialogs/embeddeddialogs.qbs b/examples/widgets/graphicsview/embeddeddialogs/embeddeddialogs.qbs
new file mode 100644
index 0000000000..aff41eea0d
--- /dev/null
+++ b/examples/widgets/graphicsview/embeddeddialogs/embeddeddialogs.qbs
@@ -0,0 +1,27 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "embeddeddialogs"
+ condition: Qt.widgets.present && Qt.gui.fontcombobox
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "customproxy.cpp",
+ "customproxy.h",
+ "embeddeddialog.cpp",
+ "embeddeddialog.h",
+ "embeddeddialog.ui",
+ "embeddeddialogs.qrc",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "graphicsview",
+ "embeddeddialogs")
+ }
+}
diff --git a/examples/widgets/graphicsview/flowlayout/flowlayout.qbs b/examples/widgets/graphicsview/flowlayout/flowlayout.qbs
new file mode 100644
index 0000000000..866bb04616
--- /dev/null
+++ b/examples/widgets/graphicsview/flowlayout/flowlayout.qbs
@@ -0,0 +1,25 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "graphicsviewflowlayout"
+ targetName: "flowlayout"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "flowlayout.cpp",
+ "flowlayout.h",
+ "main.cpp",
+ "window.cpp",
+ "window.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "graphicsview",
+ "flowlayout")
+ }
+}
diff --git a/examples/widgets/graphicsview/graphicsview.qbs b/examples/widgets/graphicsview/graphicsview.qbs
new file mode 100644
index 0000000000..0e0c4f6d59
--- /dev/null
+++ b/examples/widgets/graphicsview/graphicsview.qbs
@@ -0,0 +1,20 @@
+import qbs
+
+Project {
+ name: "graphicsview"
+ references: [
+ "anchorlayout",
+ "basicgraphicslayouts",
+ "boxes",
+ "chip",
+ "collidingmice",
+ "diagramscene",
+ "dragdroprobot",
+ "elasticnodes",
+ "embeddeddialogs",
+ "flowlayout",
+ "padnavigator",
+ "simpleanchorlayout",
+ "weatheranchorlayout",
+ ]
+}
diff --git a/examples/widgets/graphicsview/padnavigator/padnavigator.qbs b/examples/widgets/graphicsview/padnavigator/padnavigator.qbs
new file mode 100644
index 0000000000..603dabea3a
--- /dev/null
+++ b/examples/widgets/graphicsview/padnavigator/padnavigator.qbs
@@ -0,0 +1,32 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "padnavigator"
+ condition: Qt.widgets.present && Qt.widgets.config.treewidget
+ consoleApplication: true
+
+ Depends { name: "Qt.opengl"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "flippablepad.cpp",
+ "flippablepad.h",
+ "form.ui",
+ "main.cpp",
+ "padnavigator.cpp",
+ "padnavigator.h",
+ "padnavigator.qrc",
+ "roundrectitem.cpp",
+ "roundrectitem.h",
+ "splashitem.cpp",
+ "splashitem.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "graphicsview",
+ "padnavigator")
+ }
+}
diff --git a/examples/widgets/graphicsview/simpleanchorlayout/simpleanchorlayout.qbs b/examples/widgets/graphicsview/simpleanchorlayout/simpleanchorlayout.qbs
new file mode 100644
index 0000000000..cf148bd04c
--- /dev/null
+++ b/examples/widgets/graphicsview/simpleanchorlayout/simpleanchorlayout.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "simpleanchorlayout"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "graphicsview",
+ "simpleanchorlayout")
+ }
+}
diff --git a/examples/widgets/graphicsview/weatheranchorlayout/weatheranchorlayout.qbs b/examples/widgets/graphicsview/weatheranchorlayout/weatheranchorlayout.qbs
new file mode 100644
index 0000000000..4045e04ac1
--- /dev/null
+++ b/examples/widgets/graphicsview/weatheranchorlayout/weatheranchorlayout.qbs
@@ -0,0 +1,21 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "weatheranchorlayout"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "weatheranchorlayout.qrc",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "graphicsview",
+ "anchorlayout")
+ }
+}
diff --git a/examples/widgets/itemviews/addressbook/addressbook.qbs b/examples/widgets/itemviews/addressbook/addressbook.qbs
new file mode 100644
index 0000000000..ea298621f4
--- /dev/null
+++ b/examples/widgets/itemviews/addressbook/addressbook.qbs
@@ -0,0 +1,30 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "addressbook"
+ condition: Qt.widgets.present && Qt.widgets.config.listview
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "adddialog.cpp",
+ "adddialog.h",
+ "addresswidget.cpp",
+ "addresswidget.h",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "newaddresstab.cpp",
+ "newaddresstab.h",
+ "tablemodel.cpp",
+ "tablemodel.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "itemviews",
+ "addressbook")
+ }
+}
diff --git a/examples/widgets/itemviews/basicsortfiltermodel/basicsortfiltermodel.qbs b/examples/widgets/itemviews/basicsortfiltermodel/basicsortfiltermodel.qbs
new file mode 100644
index 0000000000..b0921d3fad
--- /dev/null
+++ b/examples/widgets/itemviews/basicsortfiltermodel/basicsortfiltermodel.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "basicsortfiltermodel"
+ condition: Qt.widgets.present && Qt.widgets.config.combobox
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "window.cpp",
+ "window.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "itemviews",
+ "basicsortfiltermodel")
+ }
+}
diff --git a/examples/widgets/itemviews/chart/chart.qbs b/examples/widgets/itemviews/chart/chart.qbs
new file mode 100644
index 0000000000..654bc80731
--- /dev/null
+++ b/examples/widgets/itemviews/chart/chart.qbs
@@ -0,0 +1,31 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "chart"
+ condition: Qt.widgets.present && Qt.widgets.config.filedialog
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "chart.qrc",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "pieview.cpp",
+ "pieview.h",
+ ]
+
+ Properties {
+ condition: qbs.targetOS.contains("unix")
+ && !qbs.targetOS.containsAny(["darwin", "vxworks", "integrity", "haiku"])
+ cpp.dynamicLibraries: base.concat("m")
+ }
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "itemviews",
+ "chart")
+ }
+}
diff --git a/examples/widgets/itemviews/coloreditorfactory/coloreditorfactory.qbs b/examples/widgets/itemviews/coloreditorfactory/coloreditorfactory.qbs
new file mode 100644
index 0000000000..1be69ddc7c
--- /dev/null
+++ b/examples/widgets/itemviews/coloreditorfactory/coloreditorfactory.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "coloreditorfactory"
+ condition: Qt.widgets.present && Qt.widgets.config.combobox
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "colorlisteditor.cpp",
+ "colorlisteditor.h",
+ "main.cpp",
+ "window.cpp",
+ "window.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "itemviews",
+ "coloreditfactory")
+ }
+}
diff --git a/examples/widgets/itemviews/combowidgetmapper/combowidgetmapper.qbs b/examples/widgets/itemviews/combowidgetmapper/combowidgetmapper.qbs
new file mode 100644
index 0000000000..04cc4e6baf
--- /dev/null
+++ b/examples/widgets/itemviews/combowidgetmapper/combowidgetmapper.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "combowidgetmapper"
+ condition: Qt.widgets.present && Qt.widgets.config.combobox
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "window.cpp",
+ "window.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "itemviews",
+ "combowidgetmapper")
+ }
+}
diff --git a/examples/widgets/itemviews/customsortfiltermodel/customsortfiltermodel.qbs b/examples/widgets/itemviews/customsortfiltermodel/customsortfiltermodel.qbs
new file mode 100644
index 0000000000..e320c4ddf3
--- /dev/null
+++ b/examples/widgets/itemviews/customsortfiltermodel/customsortfiltermodel.qbs
@@ -0,0 +1,27 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "customsortfiltermodel"
+ condition: Qt.widgets.present && Qt.widgets.config.treeview
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "customsortfiltermodel.qrc",
+ "filterwidget.cpp",
+ "filterwidget.h",
+ "main.cpp",
+ "mysortfilterproxymodel.cpp",
+ "mysortfilterproxymodel.h",
+ "window.cpp",
+ "window.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "itemviews",
+ "customsortfiltermodel")
+ }
+}
diff --git a/examples/widgets/itemviews/dirview/dirview.qbs b/examples/widgets/itemviews/dirview/dirview.qbs
new file mode 100644
index 0000000000..ba9cd57ef7
--- /dev/null
+++ b/examples/widgets/itemviews/dirview/dirview.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "dirview"
+ condition: Qt.widgets.present && Qt.widgets.config.treeview
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "itemviews",
+ "dirview")
+ }
+}
diff --git a/examples/widgets/itemviews/editabletreemodel/editabletreemodel.qbs b/examples/widgets/itemviews/editabletreemodel/editabletreemodel.qbs
new file mode 100644
index 0000000000..1d1a1a7a29
--- /dev/null
+++ b/examples/widgets/itemviews/editabletreemodel/editabletreemodel.qbs
@@ -0,0 +1,28 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "editabletreemodel"
+ condition: Qt.widgets.present && Qt.widgets.config.treeview
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "editabletreemodel.qrc",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "mainwindow.ui",
+ "treeitem.cpp",
+ "treeitem.h",
+ "treemodel.cpp",
+ "treemodel.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "itemviews",
+ "editabletreemodel")
+ }
+}
diff --git a/examples/widgets/itemviews/fetchmore/fetchmore.qbs b/examples/widgets/itemviews/fetchmore/fetchmore.qbs
new file mode 100644
index 0000000000..db84794fea
--- /dev/null
+++ b/examples/widgets/itemviews/fetchmore/fetchmore.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "fetchmore"
+ condition: Qt.widgets.present && Qt.widgets.config.listview
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "filelistmodel.cpp",
+ "filelistmodel.h",
+ "main.cpp",
+ "window.cpp",
+ "window.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "itemviews",
+ "fetchmore")
+ }
+}
diff --git a/examples/widgets/itemviews/frozencolumn/frozencolumn.qbs b/examples/widgets/itemviews/frozencolumn/frozencolumn.qbs
new file mode 100644
index 0000000000..f5e07928c5
--- /dev/null
+++ b/examples/widgets/itemviews/frozencolumn/frozencolumn.qbs
@@ -0,0 +1,23 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "frozencolumn"
+ condition: Qt.widgets.present && Qt.widgets.config.tableview
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "freezetablewidget.cpp",
+ "freezetablewidget.h",
+ "grades.qrc",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "itemviews",
+ "frozencolumn")
+ }
+}
diff --git a/examples/widgets/itemviews/interview/interview.qbs b/examples/widgets/itemviews/interview/interview.qbs
new file mode 100644
index 0000000000..d1f92217c7
--- /dev/null
+++ b/examples/widgets/itemviews/interview/interview.qbs
@@ -0,0 +1,23 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "interview"
+ condition: Qt.widgets.present && Qt.widgets.config.treeview
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "interview.qrc",
+ "main.cpp",
+ "model.cpp",
+ "model.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "itemviews",
+ "interview")
+ }
+}
diff --git a/examples/widgets/itemviews/itemviews.qbs b/examples/widgets/itemviews/itemviews.qbs
new file mode 100644
index 0000000000..082b57d15d
--- /dev/null
+++ b/examples/widgets/itemviews/itemviews.qbs
@@ -0,0 +1,27 @@
+import qbs
+
+Project {
+ name: "itemviews"
+ references: [
+ "addressbook",
+ "basicsortfiltermodel",
+ "chart",
+ "coloreditorfactory",
+ "combowidgetmapper",
+ "customsortfiltermodel",
+ "dirview",
+ "editabletreemodel",
+ "fetchmore",
+ "frozencolumn",
+ "interview",
+ "pixelator",
+ "puzzle",
+ "simpledommodel",
+ "simpletreemodel",
+ "simplewidgetmapper",
+ "spinboxdelegate",
+ "spreadsheet",
+ "stardelegate",
+ "storageview",
+ ]
+}
diff --git a/examples/widgets/itemviews/pixelator/pixelator.qbs b/examples/widgets/itemviews/pixelator/pixelator.qbs
new file mode 100644
index 0000000000..89424d944e
--- /dev/null
+++ b/examples/widgets/itemviews/pixelator/pixelator.qbs
@@ -0,0 +1,28 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "pixelator"
+ condition: Qt.widgets.present && Qt.widgets.config.tableview
+
+ Depends { name: "Qt.printsupport"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "imagemodel.cpp",
+ "imagemodel.h",
+ "images.qrc",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "pixeldelegate.cpp",
+ "pixeldelegate.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "itemviews",
+ "pixelator")
+ }
+}
diff --git a/examples/widgets/itemviews/puzzle/puzzle.qbs b/examples/widgets/itemviews/puzzle/puzzle.qbs
new file mode 100644
index 0000000000..6e77058b47
--- /dev/null
+++ b/examples/widgets/itemviews/puzzle/puzzle.qbs
@@ -0,0 +1,29 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "itemviewpuzzle"
+ targetName: "puzzle"
+ condition: Qt.widgets.present && Qt.gui.config.draganddrop && Qt.widgets.config.listview
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "piecesmodel.cpp",
+ "piecesmodel.h",
+ "puzzle.qrc",
+ "puzzlewidget.cpp",
+ "puzzlewidget.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "itemviews",
+ "puzzle")
+ }
+}
diff --git a/examples/widgets/itemviews/simpledommodel/simpledommodel.qbs b/examples/widgets/itemviews/simpledommodel/simpledommodel.qbs
new file mode 100644
index 0000000000..7ff6b48402
--- /dev/null
+++ b/examples/widgets/itemviews/simpledommodel/simpledommodel.qbs
@@ -0,0 +1,27 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "simpledommodel"
+ condition: Qt.widgets.present && Qt.xml.present && Qt.widgets.config.filedialog
+
+ Depends { name: "Qt.widgets"; required: false }
+ Depends { name: "Qt.xml"; required: false }
+
+ files: [
+ "domitem.cpp",
+ "domitem.h",
+ "dommodel.cpp",
+ "dommodel.h",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "itemviews",
+ "simpledommodel")
+ }
+}
diff --git a/examples/widgets/itemviews/simpletreemodel/simpletreemodel.qbs b/examples/widgets/itemviews/simpletreemodel/simpletreemodel.qbs
new file mode 100644
index 0000000000..72a8e88b03
--- /dev/null
+++ b/examples/widgets/itemviews/simpletreemodel/simpletreemodel.qbs
@@ -0,0 +1,25 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "simpletreemodel"
+ condition: Qt.widgets.present && Qt.widgets.config.treeview
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "simpletreemodel.qrc",
+ "treeitem.cpp",
+ "treeitem.h",
+ "treemodel.cpp",
+ "treemodel.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "itemviews",
+ "simpletreemodel")
+ }
+}
diff --git a/examples/widgets/itemviews/simplewidgetmapper/simplewidgetmapper.qbs b/examples/widgets/itemviews/simplewidgetmapper/simplewidgetmapper.qbs
new file mode 100644
index 0000000000..8de499f923
--- /dev/null
+++ b/examples/widgets/itemviews/simplewidgetmapper/simplewidgetmapper.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "simplewidgetmapper"
+ condition: Qt.widgets.present && Qt.widgets.config.datawidgetmapper
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "window.cpp",
+ "window.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "itemviews",
+ "simplewidgetmapper")
+ }
+}
diff --git a/examples/widgets/itemviews/spinboxdelegate/spinboxdelegate.qbs b/examples/widgets/itemviews/spinboxdelegate/spinboxdelegate.qbs
new file mode 100644
index 0000000000..0ad83e1b1c
--- /dev/null
+++ b/examples/widgets/itemviews/spinboxdelegate/spinboxdelegate.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "spinboxdelegate"
+ condition: Qt.widgets.present && Qt.widgets.config.tableview
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "delegate.cpp",
+ "delegate.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "itemviews",
+ "spinboxdelegate")
+ }
+}
diff --git a/examples/widgets/itemviews/spreadsheet/spreadsheet.qbs b/examples/widgets/itemviews/spreadsheet/spreadsheet.qbs
new file mode 100644
index 0000000000..27a3c3e884
--- /dev/null
+++ b/examples/widgets/itemviews/spreadsheet/spreadsheet.qbs
@@ -0,0 +1,30 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "spreadsheet"
+ condition: Qt.widgets.present && Qt.widgets.config.treeview
+
+ Depends { name: "Qt.printsupport"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "printview.cpp",
+ "printview.h",
+ "spreadsheet.cpp",
+ "spreadsheet.h",
+ "spreadsheet.qrc",
+ "spreadsheetdelegate.cpp",
+ "spreadsheetdelegate.h",
+ "spreadsheetitem.cpp",
+ "spreadsheetitem.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "itemviews",
+ "spreadsheet")
+ }
+}
diff --git a/examples/widgets/itemviews/stardelegate/stardelegate.qbs b/examples/widgets/itemviews/stardelegate/stardelegate.qbs
new file mode 100644
index 0000000000..82e0ea8645
--- /dev/null
+++ b/examples/widgets/itemviews/stardelegate/stardelegate.qbs
@@ -0,0 +1,27 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "stardelegate"
+ condition: Qt.widgets.present && Qt.widgets.config.tablewidget
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "stardelegate.cpp",
+ "stardelegate.h",
+ "stareditor.cpp",
+ "stareditor.h",
+ "starrating.cpp",
+ "starrating.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "itemviews",
+ "stardelegate")
+ }
+}
diff --git a/examples/widgets/itemviews/storageview/storageview.qbs b/examples/widgets/itemviews/storageview/storageview.qbs
new file mode 100644
index 0000000000..2a033c19b2
--- /dev/null
+++ b/examples/widgets/itemviews/storageview/storageview.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "storageview"
+ condition: Qt.widgets.present && Qt.widgets.config.treeview
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "storagemodel.cpp",
+ "storagemodel.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "itemviews",
+ "storageview")
+ }
+}
diff --git a/examples/widgets/layouts/basiclayouts/basiclayouts.qbs b/examples/widgets/layouts/basiclayouts/basiclayouts.qbs
new file mode 100644
index 0000000000..85e24a2371
--- /dev/null
+++ b/examples/widgets/layouts/basiclayouts/basiclayouts.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "basiclayouts"
+ condition: Qt.widgets.present && Qt.widgets.config.combobox
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "dialog.cpp",
+ "dialog.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "layouts",
+ "basiclayouts")
+ }
+}
diff --git a/examples/widgets/layouts/borderlayout/borderlayout.qbs b/examples/widgets/layouts/borderlayout/borderlayout.qbs
new file mode 100644
index 0000000000..c2f91d5f0d
--- /dev/null
+++ b/examples/widgets/layouts/borderlayout/borderlayout.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "borderlayout"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "borderlayout.cpp",
+ "borderlayout.h",
+ "main.cpp",
+ "window.cpp",
+ "window.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "layouts",
+ "borderlayouts")
+ }
+}
diff --git a/examples/widgets/layouts/dynamiclayouts/dynamiclayouts.qbs b/examples/widgets/layouts/dynamiclayouts/dynamiclayouts.qbs
new file mode 100644
index 0000000000..1340fc4506
--- /dev/null
+++ b/examples/widgets/layouts/dynamiclayouts/dynamiclayouts.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "dynamiclayouts"
+ condition: Qt.widgets.present && Qt.widgets.config.combobox
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "dialog.cpp",
+ "dialog.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "layouts",
+ "dynamiclayouts")
+ }
+}
diff --git a/examples/widgets/layouts/flowlayout/flowlayout.qbs b/examples/widgets/layouts/flowlayout/flowlayout.qbs
new file mode 100644
index 0000000000..8647c6dfe9
--- /dev/null
+++ b/examples/widgets/layouts/flowlayout/flowlayout.qbs
@@ -0,0 +1,25 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "layoutsflowlayout"
+ targetName: "flowlayout"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "flowlayout.cpp",
+ "flowlayout.h",
+ "main.cpp",
+ "window.cpp",
+ "window.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "layouts",
+ "flowlayout")
+ }
+}
diff --git a/examples/widgets/layouts/layouts.qbs b/examples/widgets/layouts/layouts.qbs
new file mode 100644
index 0000000000..9d7eddab08
--- /dev/null
+++ b/examples/widgets/layouts/layouts.qbs
@@ -0,0 +1,11 @@
+import qbs
+
+Project {
+ name: "layouts"
+ references: [
+ "basiclayouts",
+ "borderlayout",
+ "dynamiclayouts",
+ "flowlayout",
+ ]
+}
diff --git a/examples/widgets/mac/mac.qbs b/examples/widgets/mac/mac.qbs
new file mode 100644
index 0000000000..1088e03268
--- /dev/null
+++ b/examples/widgets/mac/mac.qbs
@@ -0,0 +1,9 @@
+import qbs
+
+Project {
+ name: "mac"
+ references: [
+ "qmaccocoaviewcontainer",
+ "qmacnativewidget",
+ ]
+}
diff --git a/examples/widgets/mac/qmaccocoaviewcontainer/qmaccocoaviewcontainer.qbs b/examples/widgets/mac/qmaccocoaviewcontainer/qmaccocoaviewcontainer.qbs
new file mode 100644
index 0000000000..57f2246fed
--- /dev/null
+++ b/examples/widgets/mac/qmaccocoaviewcontainer/qmaccocoaviewcontainer.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "qcocoaviewcontainer"
+ condition: Qt.widgets.present && qbs.targetOS.contains("macos")
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.mm",
+ ]
+
+ cpp.frameworks: base.concat("AppKit")
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "mac",
+ "qcocoaviewcontainer")
+ }
+}
diff --git a/examples/widgets/mac/qmacnativewidget/qmacnativewidget.qbs b/examples/widgets/mac/qmacnativewidget/qmacnativewidget.qbs
new file mode 100644
index 0000000000..b202932b44
--- /dev/null
+++ b/examples/widgets/mac/qmacnativewidget/qmacnativewidget.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "qmacnativewidget"
+ condition: Qt.widgets.present && qbs.targetOS.contains("macos")
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.mm",
+ ]
+
+ cpp.frameworks: base.concat("AppKit")
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "mac",
+ "qmacnativewidget")
+ }
+}
diff --git a/examples/widgets/mainwindows/application/application.qbs b/examples/widgets/mainwindows/application/application.qbs
new file mode 100644
index 0000000000..c688d047fc
--- /dev/null
+++ b/examples/widgets/mainwindows/application/application.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "application"
+ condition: Qt.widgets.present && Qt.gui.config.cursor && Qt.widgets.config.filedialog
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "application.qrc",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "mainwindows",
+ "application")
+ }
+}
diff --git a/examples/widgets/mainwindows/dockwidgets/dockwidgets.qbs b/examples/widgets/mainwindows/dockwidgets/dockwidgets.qbs
new file mode 100644
index 0000000000..fdcabdfe64
--- /dev/null
+++ b/examples/widgets/mainwindows/dockwidgets/dockwidgets.qbs
@@ -0,0 +1,25 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "dockwidgets"
+ condition: Qt.widgets.present && Qt.gui.config.cursor && Qt.widgets.config.listwidget
+
+ Depends { name: "Qt.printsupport"; required: false }
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "dockwidgets.qrc",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "mainwindows",
+ "dockwidgets")
+ }
+}
diff --git a/examples/widgets/mainwindows/mainwindow/mainwindow.qbs b/examples/widgets/mainwindows/mainwindow/mainwindow.qbs
new file mode 100644
index 0000000000..0d1bf322b0
--- /dev/null
+++ b/examples/widgets/mainwindows/mainwindow/mainwindow.qbs
@@ -0,0 +1,28 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "mainwindow"
+ condition: Qt.widgets.present && Qt.gui.config.cursor && Qt.widgets.config.combobox
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "colorswatch.cpp",
+ "colorswatch.h",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "mainwindow.qrc",
+ "toolbar.cpp",
+ "toolbar.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "mainwindows",
+ "mainwindow")
+ }
+}
diff --git a/examples/widgets/mainwindows/mainwindows.qbs b/examples/widgets/mainwindows/mainwindows.qbs
new file mode 100644
index 0000000000..462edb329a
--- /dev/null
+++ b/examples/widgets/mainwindows/mainwindows.qbs
@@ -0,0 +1,13 @@
+import qbs
+
+Project {
+ name: "mainwindows"
+ references: [
+ "application",
+ "dockwidgets",
+ "mainwindow",
+ "mdi",
+ "menus",
+ "sdi",
+ ]
+}
diff --git a/examples/widgets/mainwindows/mdi/mdi.qbs b/examples/widgets/mainwindows/mdi/mdi.qbs
new file mode 100644
index 0000000000..c266400861
--- /dev/null
+++ b/examples/widgets/mainwindows/mdi/mdi.qbs
@@ -0,0 +1,26 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "mdi"
+ condition: Qt.widgets.present && Qt.gui.config.cursor && Qt.widgets.config.filedialog
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "mdi.qrc",
+ "mdichild.cpp",
+ "mdichild.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "mainwindows",
+ "mdi")
+ }
+}
diff --git a/examples/widgets/mainwindows/menus/menus.qbs b/examples/widgets/mainwindows/menus/menus.qbs
new file mode 100644
index 0000000000..44b6a50b62
--- /dev/null
+++ b/examples/widgets/mainwindows/menus/menus.qbs
@@ -0,0 +1,23 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "menus"
+ condition: Qt.widgets.present && Qt.gui.config.cursor && Qt.widgets.config.combobox
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "mainwindows",
+ "menus")
+ }
+}
diff --git a/examples/widgets/mainwindows/sdi/sdi.qbs b/examples/widgets/mainwindows/sdi/sdi.qbs
new file mode 100644
index 0000000000..46834d34d7
--- /dev/null
+++ b/examples/widgets/mainwindows/sdi/sdi.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "sdi"
+ condition: Qt.widgets.present && Qt.gui.config.cursor && Qt.widgets.config.filedialog
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "sdi.qrc",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "mainwindows",
+ "sdi")
+ }
+}
diff --git a/examples/widgets/painting/affine/affine.qbs b/examples/widgets/painting/affine/affine.qbs
new file mode 100644
index 0000000000..69fdb0570b
--- /dev/null
+++ b/examples/widgets/painting/affine/affine.qbs
@@ -0,0 +1,36 @@
+import qbs
+import qbs.FileInfo
+
+import "../shared/shared.qbs" as SharedSources
+
+CppApplication {
+ name: "affine"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.opengl"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ property stringList openglDefines: []
+ Properties {
+ condition: Qt.opengl.present || Qt.gui.config.opengles2
+ openglDefines: ["QT_OPENGL_SUPPORT"]
+ }
+ cpp.defines: base.concat(openglDefines)
+ cpp.includePaths: ["../shared"]
+
+ SharedSources { }
+ files: [
+ "affine.qrc",
+ "main.cpp",
+ "xform.cpp",
+ "xform.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "painting",
+ "affine")
+ }
+}
diff --git a/examples/widgets/painting/basicdrawing/basicdrawing.qbs b/examples/widgets/painting/basicdrawing/basicdrawing.qbs
new file mode 100644
index 0000000000..986e9af6a0
--- /dev/null
+++ b/examples/widgets/painting/basicdrawing/basicdrawing.qbs
@@ -0,0 +1,25 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "basicdrawing"
+ condition: Qt.widgets.present && Qt.widgets.config.combobox
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "basicdrawing.qrc",
+ "main.cpp",
+ "renderarea.cpp",
+ "renderarea.h",
+ "window.cpp",
+ "window.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "painting",
+ "basicdrawing")
+ }
+}
diff --git a/examples/widgets/painting/composition/composition.qbs b/examples/widgets/painting/composition/composition.qbs
new file mode 100644
index 0000000000..6df691d32b
--- /dev/null
+++ b/examples/widgets/painting/composition/composition.qbs
@@ -0,0 +1,41 @@
+import qbs
+import qbs.FileInfo
+
+import "../shared/shared.qbs" as SharedSources
+
+CppApplication {
+ name: "composition"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.opengl"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ property stringList useOpenglDefines: []
+ Properties {
+ condition: Qt.opengl.present && !Qt.gui.config.dynamicgl
+ useOpenglDefines: ["USE_OPENGL"]
+ }
+ property stringList openglSupportDefines: []
+ Properties {
+ condition: Qt.opengl.present || Qt.gui.config.opengles2
+ openglSupportDefines: ["QT_OPENGL_SUPPORT"]
+ }
+ cpp.defines: base.concat(openglSupportDefines).concat(useOpenglDefines)
+ cpp.includePaths: ["../shared"]
+
+ SharedSources { }
+ files: [
+ "composition.cpp",
+ "composition.h",
+ "composition.qrc",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "painting",
+ "composition")
+ }
+}
diff --git a/examples/widgets/painting/concentriccircles/concentriccircles.qbs b/examples/widgets/painting/concentriccircles/concentriccircles.qbs
new file mode 100644
index 0000000000..d5b49f21c0
--- /dev/null
+++ b/examples/widgets/painting/concentriccircles/concentriccircles.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "concentriccircles"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "circlewidget.cpp",
+ "circlewidget.h",
+ "main.cpp",
+ "window.cpp",
+ "window.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "painting",
+ "concentriccircles")
+ }
+}
diff --git a/examples/widgets/painting/deform/deform.qbs b/examples/widgets/painting/deform/deform.qbs
new file mode 100644
index 0000000000..ac369ddfd8
--- /dev/null
+++ b/examples/widgets/painting/deform/deform.qbs
@@ -0,0 +1,36 @@
+import qbs
+import qbs.FileInfo
+
+import "../shared/shared.qbs" as SharedSources
+
+CppApplication {
+ name: "deform"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.opengl"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ property stringList openglDefines: []
+ Properties {
+ condition: Qt.opengl.present || Qt.gui.config.opengles2
+ openglDefines: ["QT_OPENGL_SUPPORT"]
+ }
+ cpp.defines: base.concat(openglDefines)
+ cpp.includePaths: ["../shared"]
+
+ SharedSources { }
+ files: [
+ "deform.qrc",
+ "main.cpp",
+ "pathdeform.cpp",
+ "pathdeform.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "painting",
+ "deform")
+ }
+}
diff --git a/examples/widgets/painting/fontsampler/fontsampler.qbs b/examples/widgets/painting/fontsampler/fontsampler.qbs
new file mode 100644
index 0000000000..7ce81a479d
--- /dev/null
+++ b/examples/widgets/painting/fontsampler/fontsampler.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "fontsampler"
+ condition: Qt.widgets.present && Qt.widgets.config.combobox
+
+ Depends { name: "Qt.printsupport"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "mainwindowbase.ui",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "painting",
+ "fontsampler")
+ }
+}
diff --git a/examples/widgets/painting/gradients/gradients.qbs b/examples/widgets/painting/gradients/gradients.qbs
new file mode 100644
index 0000000000..0393194eea
--- /dev/null
+++ b/examples/widgets/painting/gradients/gradients.qbs
@@ -0,0 +1,36 @@
+import qbs
+import qbs.FileInfo
+
+import "../shared/shared.qbs" as SharedSources
+
+CppApplication {
+ name: "gradients"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.opengl"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ property stringList openglDefines: []
+ Properties {
+ condition: Qt.opengl.present || Qt.gui.config.opengles2
+ openglDefines: ["QT_OPENGL_SUPPORT"]
+ }
+ cpp.defines: base.concat(openglDefines)
+ cpp.includePaths: ["../shared"]
+
+ SharedSources { }
+ files: [
+ "gradients.cpp",
+ "gradients.h",
+ "gradients.qrc",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "painting",
+ "gradients")
+ }
+}
diff --git a/examples/widgets/painting/imagecomposition/imagecomposition.qbs b/examples/widgets/painting/imagecomposition/imagecomposition.qbs
new file mode 100644
index 0000000000..b9242dc6c8
--- /dev/null
+++ b/examples/widgets/painting/imagecomposition/imagecomposition.qbs
@@ -0,0 +1,23 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "imagecomposition"
+ condition: Qt.widgets.present && Qt.widgets.config.combobox
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "imagecomposer.cpp",
+ "imagecomposer.h",
+ "imagecomposition.qrc",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "painting",
+ "imagecomposition")
+ }
+}
diff --git a/examples/widgets/painting/painterpaths/painterpaths.qbs b/examples/widgets/painting/painterpaths/painterpaths.qbs
new file mode 100644
index 0000000000..d8fa9d77b1
--- /dev/null
+++ b/examples/widgets/painting/painterpaths/painterpaths.qbs
@@ -0,0 +1,30 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "painterpaths"
+ condition: Qt.widgets.present && Qt.widgets.config.combobox
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "renderarea.cpp",
+ "renderarea.h",
+ "window.cpp",
+ "window.h",
+ ]
+
+ Properties {
+ condition: qbs.targetOS.contains("unix")
+ && !qbs.targetOS.containsAny(["darwin", "vxworks", "integrity", "haiku"])
+ cpp.dynamicLibraries: base.concat("m")
+ }
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "painting",
+ "painterpaths")
+ }
+}
diff --git a/examples/widgets/painting/painting.qbs b/examples/widgets/painting/painting.qbs
new file mode 100644
index 0000000000..8fc58dff73
--- /dev/null
+++ b/examples/widgets/painting/painting.qbs
@@ -0,0 +1,18 @@
+import qbs
+
+Project {
+ name: "painting"
+ references: [
+ "affine",
+ "basicdrawing",
+ "composition",
+ "concentriccircles",
+ "deform",
+ "fontsampler",
+ "gradients",
+ "imagecomposition",
+ "painterpaths",
+ "pathstroke",
+ "transformations",
+ ]
+}
diff --git a/examples/widgets/painting/pathstroke/pathstroke.qbs b/examples/widgets/painting/pathstroke/pathstroke.qbs
new file mode 100644
index 0000000000..90cb968d9a
--- /dev/null
+++ b/examples/widgets/painting/pathstroke/pathstroke.qbs
@@ -0,0 +1,36 @@
+import qbs
+import qbs.FileInfo
+
+import "../shared/shared.qbs" as SharedSources
+
+CppApplication {
+ name: "pathstroke"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.opengl"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ property stringList openglDefines: []
+ Properties {
+ condition: Qt.opengl.present || Qt.gui.config.opengles2
+ openglDefines: ["QT_OPENGL_SUPPORT"]
+ }
+ cpp.defines: base.concat(openglDefines)
+ cpp.includePaths: ["../shared"]
+
+ SharedSources { }
+ files: [
+ "main.cpp",
+ "pathstroke.cpp",
+ "pathstroke.h",
+ "pathstroke.qrc",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "painting",
+ "pathstroke")
+ }
+}
diff --git a/examples/widgets/painting/shared/shared.qbs b/examples/widgets/painting/shared/shared.qbs
new file mode 100644
index 0000000000..2526eb1ccf
--- /dev/null
+++ b/examples/widgets/painting/shared/shared.qbs
@@ -0,0 +1,16 @@
+import qbs
+
+Group {
+ name: "shared sources"
+ prefix: path + "/"
+
+ files: [
+ "arthurstyle.cpp",
+ "arthurstyle.h",
+ "arthurwidgets.cpp",
+ "arthurwidgets.h",
+ "hoverpoints.cpp",
+ "hoverpoints.h",
+ "shared.qrc",
+ ]
+}
diff --git a/examples/widgets/painting/transformations/transformations.qbs b/examples/widgets/painting/transformations/transformations.qbs
new file mode 100644
index 0000000000..368ec0c518
--- /dev/null
+++ b/examples/widgets/painting/transformations/transformations.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "transformations"
+ condition: Qt.widgets.present && Qt.widgets.config.combobox
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "renderarea.cpp",
+ "renderarea.h",
+ "window.cpp",
+ "window.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "painting",
+ "transformations")
+ }
+}
diff --git a/examples/widgets/richtext/calendar/calendar.qbs b/examples/widgets/richtext/calendar/calendar.qbs
new file mode 100644
index 0000000000..9f10193c99
--- /dev/null
+++ b/examples/widgets/richtext/calendar/calendar.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "calendar"
+ condition: Qt.widgets.present && Qt.widgets.config.combobox
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "richtext",
+ "calendar")
+ }
+}
diff --git a/examples/widgets/richtext/orderform/orderform.qbs b/examples/widgets/richtext/orderform/orderform.qbs
new file mode 100644
index 0000000000..fc407fa067
--- /dev/null
+++ b/examples/widgets/richtext/orderform/orderform.qbs
@@ -0,0 +1,26 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "orderform"
+ condition: Qt.widgets.present && Qt.widgets.config.tablewidget
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.printsupport"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "detailsdialog.cpp",
+ "detailsdialog.h",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "richtext",
+ "orderform")
+ }
+}
diff --git a/examples/widgets/richtext/richtext.qbs b/examples/widgets/richtext/richtext.qbs
new file mode 100644
index 0000000000..b6c5a664bc
--- /dev/null
+++ b/examples/widgets/richtext/richtext.qbs
@@ -0,0 +1,11 @@
+import qbs
+
+Project {
+ name: "richtext"
+ references: [
+ "calendar",
+ "orderform",
+ "syntaxhighlighter",
+ "textedit",
+ ]
+}
diff --git a/examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter.qbs b/examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter.qbs
new file mode 100644
index 0000000000..e63bf33a8e
--- /dev/null
+++ b/examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "syntaxhighlighter"
+ condition: Qt.widgets.present && Qt.widgets.config.filedialog
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "highlighter.cpp",
+ "highlighter.h",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "richtext",
+ "syntaxhighlighter")
+ }
+}
diff --git a/examples/widgets/richtext/textedit/textedit.qbs b/examples/widgets/richtext/textedit/textedit.qbs
new file mode 100644
index 0000000000..eef11ae01a
--- /dev/null
+++ b/examples/widgets/richtext/textedit/textedit.qbs
@@ -0,0 +1,25 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "textedit"
+ condition: Qt.widgets.present && Qt.widgets.config.filedialog
+
+ Depends { name: "Qt.printsupport"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "textedit.cpp",
+ "textedit.h",
+ "textedit.qdoc",
+ "textedit.qrc",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "richtext",
+ "textedit")
+ }
+}
diff --git a/examples/widgets/scroller/graphicsview/graphicsview.qbs b/examples/widgets/scroller/graphicsview/graphicsview.qbs
new file mode 100644
index 0000000000..c324e51d45
--- /dev/null
+++ b/examples/widgets/scroller/graphicsview/graphicsview.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "graphicsview"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "scroller",
+ "graphicsview")
+ }
+}
diff --git a/examples/widgets/scroller/scroller.qbs b/examples/widgets/scroller/scroller.qbs
new file mode 100644
index 0000000000..33055c74c4
--- /dev/null
+++ b/examples/widgets/scroller/scroller.qbs
@@ -0,0 +1,8 @@
+import qbs
+
+Project {
+ name: "scroller"
+ references: [
+ "graphicsview",
+ ]
+}
diff --git a/examples/widgets/statemachine/eventtransitions/eventtransitions.qbs b/examples/widgets/statemachine/eventtransitions/eventtransitions.qbs
new file mode 100644
index 0000000000..4b94d78d9b
--- /dev/null
+++ b/examples/widgets/statemachine/eventtransitions/eventtransitions.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "eventtransitions"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "statemachine",
+ "eventtransitions")
+ }
+}
diff --git a/examples/widgets/statemachine/factorial/factorial.qbs b/examples/widgets/statemachine/factorial/factorial.qbs
new file mode 100644
index 0000000000..7a4ed88576
--- /dev/null
+++ b/examples/widgets/statemachine/factorial/factorial.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "factorial"
+ consoleApplication: true
+
+ Depends { name: "Qt.core" }
+
+ files: [
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "statemachine",
+ "factorial")
+ }
+}
diff --git a/examples/widgets/statemachine/pingpong/pingpong.qbs b/examples/widgets/statemachine/pingpong/pingpong.qbs
new file mode 100644
index 0000000000..43819f98e4
--- /dev/null
+++ b/examples/widgets/statemachine/pingpong/pingpong.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "pingpong"
+ consoleApplication: true
+
+ Depends { name: "Qt.core" }
+
+ files: [
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "statemachine",
+ "pingpong")
+ }
+}
diff --git a/examples/widgets/statemachine/rogue/rogue.qbs b/examples/widgets/statemachine/rogue/rogue.qbs
new file mode 100644
index 0000000000..b9f3813391
--- /dev/null
+++ b/examples/widgets/statemachine/rogue/rogue.qbs
@@ -0,0 +1,23 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "rogue"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "movementtransition.h",
+ "window.cpp",
+ "window.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "statemachine",
+ "rogue")
+ }
+}
diff --git a/examples/widgets/statemachine/statemachine.qbs b/examples/widgets/statemachine/statemachine.qbs
new file mode 100644
index 0000000000..f43edf34f5
--- /dev/null
+++ b/examples/widgets/statemachine/statemachine.qbs
@@ -0,0 +1,13 @@
+import qbs
+
+Project {
+ name: "statemachine"
+ references: [
+ "eventtransitions",
+ "factorial",
+ "pingpong",
+ "rogue",
+ "trafficlight",
+ "twowaybutton",
+ ]
+}
diff --git a/examples/widgets/statemachine/trafficlight/trafficlight.qbs b/examples/widgets/statemachine/trafficlight/trafficlight.qbs
new file mode 100644
index 0000000000..8f7c98d076
--- /dev/null
+++ b/examples/widgets/statemachine/trafficlight/trafficlight.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "trafficlight"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "statemachine",
+ "trafficlight")
+ }
+}
diff --git a/examples/widgets/statemachine/twowaybutton/twowaybutton.qbs b/examples/widgets/statemachine/twowaybutton/twowaybutton.qbs
new file mode 100644
index 0000000000..b5569b9f71
--- /dev/null
+++ b/examples/widgets/statemachine/twowaybutton/twowaybutton.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "twowaybutton"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "statemachine",
+ "twowaybutton")
+ }
+}
diff --git a/examples/widgets/tools/codecs/codecs.qbs b/examples/widgets/tools/codecs/codecs.qbs
new file mode 100644
index 0000000000..2c9f2b51c9
--- /dev/null
+++ b/examples/widgets/tools/codecs/codecs.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "codecs"
+ condition: Qt.widgets.present && Qt.widgets.config.filedialog
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "previewform.cpp",
+ "previewform.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tools",
+ "codecs")
+ }
+}
diff --git a/examples/widgets/tools/completer/completer.qbs b/examples/widgets/tools/completer/completer.qbs
new file mode 100644
index 0000000000..2ca1590b0e
--- /dev/null
+++ b/examples/widgets/tools/completer/completer.qbs
@@ -0,0 +1,25 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "completer"
+ condition: Qt.widgets.present && Qt.widgets.config.completer
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "completer.qrc",
+ "fsmodel.cpp",
+ "fsmodel.h",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tools",
+ "completer")
+ }
+}
diff --git a/examples/widgets/tools/customcompleter/customcompleter.qbs b/examples/widgets/tools/customcompleter/customcompleter.qbs
new file mode 100644
index 0000000000..d735f43360
--- /dev/null
+++ b/examples/widgets/tools/customcompleter/customcompleter.qbs
@@ -0,0 +1,25 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "customcompleter"
+ condition: Qt.widgets.present && Qt.widgets.config.completer
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "customcompleter.qrc",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "textedit.cpp",
+ "textedit.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tools",
+ "customcompleter")
+ }
+}
diff --git a/examples/widgets/tools/echoplugin/echoplugin.qbs b/examples/widgets/tools/echoplugin/echoplugin.qbs
new file mode 100644
index 0000000000..709f7bcdb7
--- /dev/null
+++ b/examples/widgets/tools/echoplugin/echoplugin.qbs
@@ -0,0 +1,9 @@
+import qbs
+
+Project {
+ name: "echoplugin"
+ references: [
+ "echowindow",
+ "plugin",
+ ]
+}
diff --git a/examples/widgets/tools/echoplugin/echowindow/echowindow.qbs b/examples/widgets/tools/echoplugin/echowindow/echowindow.qbs
new file mode 100644
index 0000000000..fb08f23eb6
--- /dev/null
+++ b/examples/widgets/tools/echoplugin/echowindow/echowindow.qbs
@@ -0,0 +1,26 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "echopluginwindow"
+ targetName: "echoplugin"
+ condition: Qt.widgets.present && Qt.core.config.library
+ destinationDirectory: project.buildDirectory + "/examples/widgets/tools/echoplugin"
+
+ Depends { name: "Qt.core" }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "echointerface.h",
+ "echowindow.cpp",
+ "echowindow.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tools",
+ "echoplugin")
+ }
+}
diff --git a/examples/widgets/tools/echoplugin/plugin/plugin.qbs b/examples/widgets/tools/echoplugin/plugin/plugin.qbs
new file mode 100644
index 0000000000..307bcbabb5
--- /dev/null
+++ b/examples/widgets/tools/echoplugin/plugin/plugin.qbs
@@ -0,0 +1,28 @@
+import qbs
+import qbs.FileInfo
+
+DynamicLibrary {
+ name: "echoplugin"
+ condition: Qt.widgets.present && Qt.core.config.library
+ destinationDirectory: project.buildDirectory + "/examples/widgets/tools/echoplugin/plugins"
+
+ Depends { name: "Qt.core" }
+ Depends { name: "Qt.widgets"; required: false }
+
+ cpp.includePaths: base.concat("../echowindow")
+
+ files: [
+ "echoplugin.cpp",
+ "echoplugin.h",
+ "echoplugin.json",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tools",
+ "dynamiclibrary")
+ }
+}
+
+// CONFIG += plugin
diff --git a/examples/widgets/tools/i18n/i18n.qbs b/examples/widgets/tools/i18n/i18n.qbs
new file mode 100644
index 0000000000..23b5179af7
--- /dev/null
+++ b/examples/widgets/tools/i18n/i18n.qbs
@@ -0,0 +1,47 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "i18n"
+ condition: Qt.widgets.present && Qt.core.config.translation && Qt.widgets.config.listwidget
+
+ Depends { name: "Qt.core" }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "i18n.qrc",
+ "languagechooser.cpp",
+ "languagechooser.h",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ ]
+
+ Group {
+ name: "translations"
+ prefix: "translations/"
+ files: [
+ "i18n_ar.ts",
+ "i18n_cs.ts",
+ "i18n_de.ts",
+ "i18n_el.ts",
+ "i18n_en.ts",
+ "i18n_eo.ts",
+ "i18n_fr.ts",
+ "i18n_it.ts",
+ "i18n_jp.ts",
+ "i18n_ko.ts",
+ "i18n_no.ts",
+ "i18n_ru.ts",
+ "i18n_sv.ts",
+ "i18n_zh.ts",
+ ]
+ }
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tools",
+ "i18n")
+ }
+}
diff --git a/examples/widgets/tools/plugandpaint/# b/examples/widgets/tools/plugandpaint/#
new file mode 100644
index 0000000000..df6595d745
--- /dev/null
+++ b/examples/widgets/tools/plugandpaint/#
@@ -0,0 +1,20 @@
+import qbs
+
+QtExample {
+ name: "plugandpaint"
+ condition: Qt.widgets.present && !project.disabledFeatures.contains("library")
+
+ Depends { name: "pnp_basictools"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "interfaces.h",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "paintarea.cpp",
+ "paintarea.h",
+ "plugindialog.cpp",
+ "plugindialog.h",
+ ]
+}
diff --git a/examples/widgets/tools/plugandpaint/app/app.qbs b/examples/widgets/tools/plugandpaint/app/app.qbs
new file mode 100644
index 0000000000..a8f21f49a6
--- /dev/null
+++ b/examples/widgets/tools/plugandpaint/app/app.qbs
@@ -0,0 +1,32 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "plugandpaint"
+ condition: Qt.widgets.present && Qt.core.config.library && Qt.widgets.config.inputdialog
+ destinationDirectory: FileInfo.joinPaths(project.buildDirectory, "widgets", "tools",
+ "plugandpaint")
+
+ Depends { name: "pnp_basictools" }
+ Depends { name: "pnp_extrafilters"; cpp.link: false }
+ Depends { name: "Qt.core" }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "interfaces.h",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "paintarea.cpp",
+ "paintarea.h",
+ "plugindialog.cpp",
+ "plugindialog.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tools",
+ "plugandpaint")
+ }
+}
diff --git a/examples/widgets/tools/plugandpaint/plugandpaint.qbs b/examples/widgets/tools/plugandpaint/plugandpaint.qbs
new file mode 100644
index 0000000000..b9a9223353
--- /dev/null
+++ b/examples/widgets/tools/plugandpaint/plugandpaint.qbs
@@ -0,0 +1,5 @@
+import qbs
+
+Project {
+ references: ["app", "plugins"]
+}
diff --git a/examples/widgets/tools/plugandpaint/plugins/basictools/basictools.qbs b/examples/widgets/tools/plugandpaint/plugins/basictools/basictools.qbs
new file mode 100644
index 0000000000..1c363a4241
--- /dev/null
+++ b/examples/widgets/tools/plugandpaint/plugins/basictools/basictools.qbs
@@ -0,0 +1,18 @@
+import qbs
+
+StaticLibrary {
+ name: "pnp_basictools"
+ condition: Qt.widgets.present && Qt.core.config.library
+
+ Depends { name: "Qt.core" }
+ Depends { name: "Qt.widgets"; required: false }
+
+ cpp.includePaths: base.concat("../../app")
+ cpp.defines: base.concat(["QT_PLUGIN", "QT_STATICPLUGIN"])
+
+ files: [
+ "basictools.json",
+ "basictoolsplugin.cpp",
+ "basictoolsplugin.h",
+ ]
+}
diff --git a/examples/widgets/tools/plugandpaint/plugins/extrafilters/extrafilters.qbs b/examples/widgets/tools/plugandpaint/plugins/extrafilters/extrafilters.qbs
new file mode 100644
index 0000000000..6de75b22e9
--- /dev/null
+++ b/examples/widgets/tools/plugandpaint/plugins/extrafilters/extrafilters.qbs
@@ -0,0 +1,29 @@
+import qbs
+import qbs.FileInfo
+
+DynamicLibrary {
+ name: "pnp_extrafilters"
+ condition: Qt.widgets.present && Qt.core.config.library
+ type: ["dynamiclibrary"]
+ destinationDirectory: project.buildDirectory + "/examples/widgets/tools/plugandpaint/plugins"
+
+ Depends { name: "Qt.core" }
+ Depends { name: "Qt.widgets"; required: false }
+
+ cpp.includePaths: base.concat("../../app")
+
+ files: [
+ "extrafilters.json",
+ "extrafiltersplugin.cpp",
+ "extrafiltersplugin.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["dynamiclibrary"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tools",
+ "plugandpaint", "plugins")
+ }
+}
+
+// CONFIG += plugin
diff --git a/examples/widgets/tools/plugandpaint/plugins/plugins.qbs b/examples/widgets/tools/plugandpaint/plugins/plugins.qbs
new file mode 100644
index 0000000000..7c36fc97a6
--- /dev/null
+++ b/examples/widgets/tools/plugandpaint/plugins/plugins.qbs
@@ -0,0 +1,9 @@
+import qbs
+
+Project {
+ name: "plugandpaintplugins"
+ references: [
+ "basictools",
+ "extrafilters",
+ ]
+}
diff --git a/examples/widgets/tools/regexp/regexp.qbs b/examples/widgets/tools/regexp/regexp.qbs
new file mode 100644
index 0000000000..509df7c2c9
--- /dev/null
+++ b/examples/widgets/tools/regexp/regexp.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "regexp"
+ condition: Qt.widgets.present && Qt.widgets.config.combobox
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "regexpdialog.cpp",
+ "regexpdialog.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tools",
+ "regexp")
+ }
+}
diff --git a/examples/widgets/tools/regularexpression/regularexpression.qbs b/examples/widgets/tools/regularexpression/regularexpression.qbs
new file mode 100644
index 0000000000..ec2bb7f708
--- /dev/null
+++ b/examples/widgets/tools/regularexpression/regularexpression.qbs
@@ -0,0 +1,23 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "regularexpression"
+ condition: Qt.widgets.present && Qt.widgets.config.treewidget
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "regularexpressiondialog.cpp",
+ "regularexpressiondialog.h",
+ "regularexpression.qrc",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tools",
+ "regularexpression")
+ }
+}
diff --git a/examples/widgets/tools/settingseditor/settingseditor.qbs b/examples/widgets/tools/settingseditor/settingseditor.qbs
new file mode 100644
index 0000000000..986f88605d
--- /dev/null
+++ b/examples/widgets/tools/settingseditor/settingseditor.qbs
@@ -0,0 +1,28 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "settingseditor"
+ condition: Qt.widgets.present && Qt.widgets.config.tablewidget
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "locationdialog.cpp",
+ "locationdialog.h",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "settingstree.cpp",
+ "settingstree.h",
+ "variantdelegate.cpp",
+ "variantdelegate.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tools",
+ "settingseditor")
+ }
+}
diff --git a/examples/widgets/tools/styleplugin/plugin/plugin.qbs b/examples/widgets/tools/styleplugin/plugin/plugin.qbs
new file mode 100644
index 0000000000..31445a5e16
--- /dev/null
+++ b/examples/widgets/tools/styleplugin/plugin/plugin.qbs
@@ -0,0 +1,25 @@
+import qbs
+import qbs.FileInfo
+
+DynamicLibrary {
+ name: "simplestyleplugin"
+ condition: Qt.widgets.present
+ destinationDirectory: project.buildDirectory + "/examples/widgets/tools/styleplugin/styles"
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "simplestyle.cpp",
+ "simplestyle.h",
+ "simplestyle.json",
+ "simplestyleplugin.cpp",
+ "simplestyleplugin.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["dynamiclibrary"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tools",
+ "styleplugin", "styles")
+ }
+}
diff --git a/examples/widgets/tools/styleplugin/styleplugin.qbs b/examples/widgets/tools/styleplugin/styleplugin.qbs
new file mode 100644
index 0000000000..b9e4a4e028
--- /dev/null
+++ b/examples/widgets/tools/styleplugin/styleplugin.qbs
@@ -0,0 +1,9 @@
+import qbs
+
+Project {
+ name: "styleplugin"
+ references: [
+ "plugin",
+ "stylewindow",
+ ]
+}
diff --git a/examples/widgets/tools/styleplugin/stylewindow/stylewindow.qbs b/examples/widgets/tools/styleplugin/stylewindow/stylewindow.qbs
new file mode 100644
index 0000000000..cc45959208
--- /dev/null
+++ b/examples/widgets/tools/styleplugin/stylewindow/stylewindow.qbs
@@ -0,0 +1,23 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "styleplugin"
+ condition: Qt.widgets.present
+ destinationDirectory: project.buildDirectory + "/examples/widgets/tools/styleplugin"
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "stylewindow.cpp",
+ "stylewindow.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tools",
+ "styleplugin")
+ }
+}
diff --git a/examples/widgets/tools/tools.qbs b/examples/widgets/tools/tools.qbs
new file mode 100644
index 0000000000..d086a6f8e3
--- /dev/null
+++ b/examples/widgets/tools/tools.qbs
@@ -0,0 +1,20 @@
+import qbs
+
+Project {
+ name: "tools"
+ references: [
+ "codecs",
+ "completer",
+ "customcompleter",
+ "echoplugin",
+ "i18n",
+ "plugandpaint",
+ "regexp",
+ "regularexpression",
+ "settingseditor",
+ "styleplugin",
+ "treemodelcompleter",
+ "undo",
+ "undoframework",
+ ]
+}
diff --git a/examples/widgets/tools/treemodelcompleter/treemodelcompleter.qbs b/examples/widgets/tools/treemodelcompleter/treemodelcompleter.qbs
new file mode 100644
index 0000000000..510994f12c
--- /dev/null
+++ b/examples/widgets/tools/treemodelcompleter/treemodelcompleter.qbs
@@ -0,0 +1,25 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "treemodelcompleter"
+ condition: Qt.widgets.present && Qt.widgets.config.completer
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "treemodelcompleter.cpp",
+ "treemodelcompleter.h",
+ "treemodelcompleter.qrc",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tools",
+ "treemodelcompleter")
+ }
+}
diff --git a/examples/widgets/tools/undo/undo.qbs b/examples/widgets/tools/undo/undo.qbs
new file mode 100644
index 0000000000..fd968561f2
--- /dev/null
+++ b/examples/widgets/tools/undo/undo.qbs
@@ -0,0 +1,28 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "undo"
+ condition: Qt.widgets.present && Qt.widgets.config.undoview
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "commands.cpp",
+ "commands.h",
+ "document.cpp",
+ "document.h",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "mainwindow.ui",
+ "undo.qrc",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tools",
+ "undo")
+ }
+}
diff --git a/examples/widgets/tools/undoframework/undoframework.qbs b/examples/widgets/tools/undoframework/undoframework.qbs
new file mode 100644
index 0000000000..949d465cef
--- /dev/null
+++ b/examples/widgets/tools/undoframework/undoframework.qbs
@@ -0,0 +1,29 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "undoframework"
+ condition: Qt.widgets.present && Qt.widgets.config.undoview
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "commands.cpp",
+ "commands.h",
+ "diagramitem.cpp",
+ "diagramitem.h",
+ "diagramscene.cpp",
+ "diagramscene.h",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "undoframework.qrc",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tools",
+ "undoframework")
+ }
+}
diff --git a/examples/widgets/tutorials/addressbook/addressbook.qbs b/examples/widgets/tutorials/addressbook/addressbook.qbs
new file mode 100644
index 0000000000..592244c1db
--- /dev/null
+++ b/examples/widgets/tutorials/addressbook/addressbook.qbs
@@ -0,0 +1,14 @@
+import qbs
+
+Project {
+ name: "addressbook"
+ references: [
+ "part1",
+ "part2",
+ "part3",
+ "part4",
+ "part5",
+ "part6",
+ "part7",
+ ]
+}
diff --git a/examples/widgets/tutorials/addressbook/part1/part1.qbs b/examples/widgets/tutorials/addressbook/part1/part1.qbs
new file mode 100644
index 0000000000..8eebbc7bed
--- /dev/null
+++ b/examples/widgets/tutorials/addressbook/part1/part1.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "part1"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "addressbook.cpp",
+ "addressbook.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tutorials",
+ "addressbook", "part1")
+ }
+}
diff --git a/examples/widgets/tutorials/addressbook/part2/part2.qbs b/examples/widgets/tutorials/addressbook/part2/part2.qbs
new file mode 100644
index 0000000000..c7a74c40fe
--- /dev/null
+++ b/examples/widgets/tutorials/addressbook/part2/part2.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "part2"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "addressbook.cpp",
+ "addressbook.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tutorials",
+ "addressbook", "part2")
+ }
+}
diff --git a/examples/widgets/tutorials/addressbook/part3/part3.qbs b/examples/widgets/tutorials/addressbook/part3/part3.qbs
new file mode 100644
index 0000000000..8e415d2710
--- /dev/null
+++ b/examples/widgets/tutorials/addressbook/part3/part3.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "part3"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "addressbook.cpp",
+ "addressbook.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tutorials",
+ "addressbook", "part3")
+ }
+}
diff --git a/examples/widgets/tutorials/addressbook/part4/part4.qbs b/examples/widgets/tutorials/addressbook/part4/part4.qbs
new file mode 100644
index 0000000000..2bf0c9c117
--- /dev/null
+++ b/examples/widgets/tutorials/addressbook/part4/part4.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "part4"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "addressbook.cpp",
+ "addressbook.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tutorials",
+ "addressbook", "part4")
+ }
+}
diff --git a/examples/widgets/tutorials/addressbook/part5/part5.qbs b/examples/widgets/tutorials/addressbook/part5/part5.qbs
new file mode 100644
index 0000000000..66617d1280
--- /dev/null
+++ b/examples/widgets/tutorials/addressbook/part5/part5.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "part5"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "addressbook.cpp",
+ "addressbook.h",
+ "finddialog.cpp",
+ "finddialog.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tutorials",
+ "addressbook", "part5")
+ }
+}
diff --git a/examples/widgets/tutorials/addressbook/part6/part6.qbs b/examples/widgets/tutorials/addressbook/part6/part6.qbs
new file mode 100644
index 0000000000..13ed81a3fd
--- /dev/null
+++ b/examples/widgets/tutorials/addressbook/part6/part6.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "part6"
+ condition: Qt.widgets.present && Qt.widgets.config.filedialog
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "addressbook.cpp",
+ "addressbook.h",
+ "finddialog.cpp",
+ "finddialog.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tutorials",
+ "addressbook", "part6")
+ }
+}
diff --git a/examples/widgets/tutorials/addressbook/part7/part7.qbs b/examples/widgets/tutorials/addressbook/part7/part7.qbs
new file mode 100644
index 0000000000..a1e6a02777
--- /dev/null
+++ b/examples/widgets/tutorials/addressbook/part7/part7.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "part7"
+ condition: Qt.widgets.present && Qt.widgets.config.filedialog
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "addressbook.cpp",
+ "addressbook.h",
+ "finddialog.cpp",
+ "finddialog.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tutorials",
+ "addressbook", "part7")
+ }
+}
diff --git a/examples/widgets/tutorials/gettingStarted/gettingStarted.qbs b/examples/widgets/tutorials/gettingStarted/gettingStarted.qbs
new file mode 100644
index 0000000000..59f3a236c4
--- /dev/null
+++ b/examples/widgets/tutorials/gettingStarted/gettingStarted.qbs
@@ -0,0 +1,8 @@
+import qbs
+
+Project {
+ name: "gettingStarted"
+ references: [
+ "gsQt",
+ ]
+}
diff --git a/examples/widgets/tutorials/gettingStarted/gsQt/gsqt.qbs b/examples/widgets/tutorials/gettingStarted/gsQt/gsqt.qbs
new file mode 100644
index 0000000000..f2ba6fd07c
--- /dev/null
+++ b/examples/widgets/tutorials/gettingStarted/gsQt/gsqt.qbs
@@ -0,0 +1,12 @@
+import qbs
+
+Project {
+ name: "gsqt"
+ references: [
+ "part1",
+ "part2",
+ "part3",
+ "part4",
+ "part5",
+ ]
+}
diff --git a/examples/widgets/tutorials/gettingStarted/gsQt/part1/part1.qbs b/examples/widgets/tutorials/gettingStarted/gsQt/part1/part1.qbs
new file mode 100644
index 0000000000..b458558bd7
--- /dev/null
+++ b/examples/widgets/tutorials/gettingStarted/gsQt/part1/part1.qbs
@@ -0,0 +1,21 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "gettingStarted_part1"
+ targetName: "part1"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tutorials",
+ "gettingStarted", "gsQt", "part1")
+ }
+}
diff --git a/examples/widgets/tutorials/gettingStarted/gsQt/part2/part2.qbs b/examples/widgets/tutorials/gettingStarted/gsQt/part2/part2.qbs
new file mode 100644
index 0000000000..73d50deefe
--- /dev/null
+++ b/examples/widgets/tutorials/gettingStarted/gsQt/part2/part2.qbs
@@ -0,0 +1,21 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "gettingStarted_part2"
+ targetName: "part2"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tutorials",
+ "gettingStarted", "gsQt", "part2")
+ }
+}
diff --git a/examples/widgets/tutorials/gettingStarted/gsQt/part3/part3.qbs b/examples/widgets/tutorials/gettingStarted/gsQt/part3/part3.qbs
new file mode 100644
index 0000000000..a37d072326
--- /dev/null
+++ b/examples/widgets/tutorials/gettingStarted/gsQt/part3/part3.qbs
@@ -0,0 +1,21 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "gettingStarted_part3"
+ targetName: "part3"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tutorials",
+ "gettingStarted", "gsQt", "part3")
+ }
+}
diff --git a/examples/widgets/tutorials/gettingStarted/gsQt/part4/part4.qbs b/examples/widgets/tutorials/gettingStarted/gsQt/part4/part4.qbs
new file mode 100644
index 0000000000..f9f78fa296
--- /dev/null
+++ b/examples/widgets/tutorials/gettingStarted/gsQt/part4/part4.qbs
@@ -0,0 +1,21 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "gettingStarted_part4"
+ targetName: "part4"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tutorials",
+ "gettingStarted", "gsQt", "part4")
+ }
+}
diff --git a/examples/widgets/tutorials/gettingStarted/gsQt/part5/part5.qbs b/examples/widgets/tutorials/gettingStarted/gsQt/part5/part5.qbs
new file mode 100644
index 0000000000..6691d01c18
--- /dev/null
+++ b/examples/widgets/tutorials/gettingStarted/gsQt/part5/part5.qbs
@@ -0,0 +1,21 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "gettingStarted_part5"
+ targetName: "part5"
+ condition: Qt.widgets.present && Qt.widgets.config.filedialog
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tutorials",
+ "gettingStarted", "gsQt", "part5")
+ }
+}
diff --git a/examples/widgets/tutorials/modelview/1_readonly/1_readonly.qbs b/examples/widgets/tutorials/modelview/1_readonly/1_readonly.qbs
new file mode 100644
index 0000000000..aba47acfed
--- /dev/null
+++ b/examples/widgets/tutorials/modelview/1_readonly/1_readonly.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "mv_readonly"
+ condition: Qt.widgets.present && Qt.widgets.config.tableview
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "mymodel.cpp",
+ "mymodel.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tutorials",
+ "modelview", "1_readonly")
+ }
+}
diff --git a/examples/widgets/tutorials/modelview/2_formatting/2_formatting.qbs b/examples/widgets/tutorials/modelview/2_formatting/2_formatting.qbs
new file mode 100644
index 0000000000..88bc32dc32
--- /dev/null
+++ b/examples/widgets/tutorials/modelview/2_formatting/2_formatting.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "mv_formatting"
+ condition: Qt.widgets.present && Qt.widgets.config.tableview
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "mymodel.cpp",
+ "mymodel.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tutorials",
+ "modelview", "2_formatting")
+ }
+}
diff --git a/examples/widgets/tutorials/modelview/3_changingmodel/3_changingmodel.qbs b/examples/widgets/tutorials/modelview/3_changingmodel/3_changingmodel.qbs
new file mode 100644
index 0000000000..9116a8cc67
--- /dev/null
+++ b/examples/widgets/tutorials/modelview/3_changingmodel/3_changingmodel.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "mv_changingmodel"
+ condition: Qt.widgets.present && Qt.widgets.config.tableview
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "mymodel.cpp",
+ "mymodel.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tutorials",
+ "modelview", "3_changingmodels")
+ }
+}
diff --git a/examples/widgets/tutorials/modelview/4_headers/4_headers.qbs b/examples/widgets/tutorials/modelview/4_headers/4_headers.qbs
new file mode 100644
index 0000000000..21bd3eaa2d
--- /dev/null
+++ b/examples/widgets/tutorials/modelview/4_headers/4_headers.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "mv_headers"
+ condition: Qt.widgets.present && Qt.widgets.config.tableview
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "mymodel.cpp",
+ "mymodel.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tutorials",
+ "modelview", "4_headers")
+ }
+}
diff --git a/examples/widgets/tutorials/modelview/5_edit/5_edit.qbs b/examples/widgets/tutorials/modelview/5_edit/5_edit.qbs
new file mode 100644
index 0000000000..e69bbdd51e
--- /dev/null
+++ b/examples/widgets/tutorials/modelview/5_edit/5_edit.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "mv_edit"
+ condition: Qt.widgets.present && Qt.widgets.config.tableview
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "mymodel.cpp",
+ "mymodel.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tutorials",
+ "modelview", "5_edit")
+ }
+}
diff --git a/examples/widgets/tutorials/modelview/6_treeview/6_treeview.qbs b/examples/widgets/tutorials/modelview/6_treeview/6_treeview.qbs
new file mode 100644
index 0000000000..922ef49c02
--- /dev/null
+++ b/examples/widgets/tutorials/modelview/6_treeview/6_treeview.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "mv_tree"
+ condition: Qt.widgets.present && Qt.widgets.config.treeview
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tutorials",
+ "modelview", "6_treeview")
+ }
+}
diff --git a/examples/widgets/tutorials/modelview/7_selections/7_selections.qbs b/examples/widgets/tutorials/modelview/7_selections/7_selections.qbs
new file mode 100644
index 0000000000..227f44c92f
--- /dev/null
+++ b/examples/widgets/tutorials/modelview/7_selections/7_selections.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "mv_selections"
+ condition: Qt.widgets.present && Qt.widgets.config.treeview
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tutorials",
+ "modelview", "7_selections")
+ }
+}
diff --git a/examples/widgets/tutorials/modelview/modelview.qbs b/examples/widgets/tutorials/modelview/modelview.qbs
new file mode 100644
index 0000000000..f8d338c4d6
--- /dev/null
+++ b/examples/widgets/tutorials/modelview/modelview.qbs
@@ -0,0 +1,14 @@
+import qbs
+
+Project {
+ name: "modelview"
+ references: [
+ "1_readonly",
+ "2_formatting",
+ "3_changingmodel",
+ "4_headers",
+ "5_edit",
+ "6_treeview",
+ "7_selections",
+ ]
+}
diff --git a/examples/widgets/tutorials/tutorials.qbs b/examples/widgets/tutorials/tutorials.qbs
new file mode 100644
index 0000000000..ecf44f8a2e
--- /dev/null
+++ b/examples/widgets/tutorials/tutorials.qbs
@@ -0,0 +1,11 @@
+import qbs
+
+Project {
+ name: "tutorials"
+ references: [
+ "addressbook",
+ "gettingStarted",
+ "modelview",
+ "widgets",
+ ]
+}
diff --git a/examples/widgets/tutorials/widgets/childwidget/childwidget.qbs b/examples/widgets/tutorials/widgets/childwidget/childwidget.qbs
new file mode 100644
index 0000000000..36681e6c6d
--- /dev/null
+++ b/examples/widgets/tutorials/widgets/childwidget/childwidget.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "childwidget"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tutorials",
+ "widgets", "childwidget")
+ }
+}
diff --git a/examples/widgets/tutorials/widgets/nestedlayouts/nestedlayouts.qbs b/examples/widgets/tutorials/widgets/nestedlayouts/nestedlayouts.qbs
new file mode 100644
index 0000000000..f2300703a7
--- /dev/null
+++ b/examples/widgets/tutorials/widgets/nestedlayouts/nestedlayouts.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "nestedlayouts"
+ condition: Qt.widgets.present && Qt.widgets.config.tableview
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tutorials",
+ "widgets", "nestedlayouts")
+ }
+}
diff --git a/examples/widgets/tutorials/widgets/toplevel/toplevel.qbs b/examples/widgets/tutorials/widgets/toplevel/toplevel.qbs
new file mode 100644
index 0000000000..36c1477264
--- /dev/null
+++ b/examples/widgets/tutorials/widgets/toplevel/toplevel.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "toplevel"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tutorials",
+ "widgets", "toplevel")
+ }
+}
diff --git a/examples/widgets/tutorials/widgets/widgets.qbs b/examples/widgets/tutorials/widgets/widgets.qbs
new file mode 100644
index 0000000000..f9c209be66
--- /dev/null
+++ b/examples/widgets/tutorials/widgets/widgets.qbs
@@ -0,0 +1,11 @@
+import qbs
+
+Project {
+ name: "widgets"
+ references: [
+ "childwidget",
+ "nestedlayouts",
+ "toplevel",
+ "windowlayout",
+ ]
+}
diff --git a/examples/widgets/tutorials/widgets/windowlayout/windowlayout.qbs b/examples/widgets/tutorials/widgets/windowlayout/windowlayout.qbs
new file mode 100644
index 0000000000..d69dd22a72
--- /dev/null
+++ b/examples/widgets/tutorials/widgets/windowlayout/windowlayout.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "windowlayout"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "tutorials",
+ "widgets", "windowlayout")
+ }
+}
diff --git a/examples/widgets/widgets.qbs b/examples/widgets/widgets.qbs
new file mode 100644
index 0000000000..82431d5fca
--- /dev/null
+++ b/examples/widgets/widgets.qbs
@@ -0,0 +1,27 @@
+import qbs
+
+Project {
+ name: "widgets"
+
+ references: [
+ "animation",
+ "desktop",
+ "dialogs",
+ "draganddrop",
+ "effects",
+ "gestures",
+ "graphicsview",
+ "itemviews",
+ "layouts",
+ "mac",
+ "mainwindows",
+ "painting",
+ "richtext",
+ "scroller",
+ "statemachine",
+ "tools",
+ "tutorials",
+ "widgets",
+ "windowcontainer",
+ ]
+}
diff --git a/examples/widgets/widgets/analogclock/analogclock.qbs b/examples/widgets/widgets/analogclock/analogclock.qbs
new file mode 100644
index 0000000000..fa33e082b9
--- /dev/null
+++ b/examples/widgets/widgets/analogclock/analogclock.qbs
@@ -0,0 +1,23 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "widgets_analogclock"
+ targetName: "analogclock"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "analogclock.cpp",
+ "analogclock.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "widgets",
+ "analogclock")
+ }
+}
diff --git a/examples/widgets/widgets/calculator/calculator.qbs b/examples/widgets/widgets/calculator/calculator.qbs
new file mode 100644
index 0000000000..72b2479639
--- /dev/null
+++ b/examples/widgets/widgets/calculator/calculator.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "calculator"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "button.cpp",
+ "button.h",
+ "calculator.cpp",
+ "calculator.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "widgets",
+ "calculator")
+ }
+}
diff --git a/examples/widgets/widgets/calendarwidget/calendarwidget.qbs b/examples/widgets/widgets/calendarwidget/calendarwidget.qbs
new file mode 100644
index 0000000000..09b00e4220
--- /dev/null
+++ b/examples/widgets/widgets/calendarwidget/calendarwidget.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "calendarwidget"
+ condition: Qt.widgets.present && Qt.widgets.config.combobox
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "window.cpp",
+ "window.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "widgets",
+ "calendarwidget")
+ }
+}
diff --git a/examples/widgets/widgets/charactermap/charactermap.qbs b/examples/widgets/widgets/charactermap/charactermap.qbs
new file mode 100644
index 0000000000..f98e81da6e
--- /dev/null
+++ b/examples/widgets/widgets/charactermap/charactermap.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "charactermap"
+ condition: Qt.widgets.present && Qt.widgets.config.combobox
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "characterwidget.cpp",
+ "characterwidget.h",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "widgets",
+ "charactermap")
+ }
+}
diff --git a/examples/widgets/widgets/codeeditor/codeeditor.qbs b/examples/widgets/widgets/codeeditor/codeeditor.qbs
new file mode 100644
index 0000000000..250dbe3085
--- /dev/null
+++ b/examples/widgets/widgets/codeeditor/codeeditor.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "codeeditor"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "codeeditor.cpp",
+ "codeeditor.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "widgets",
+ "codeeditor")
+ }
+}
diff --git a/examples/widgets/widgets/digitalclock/digitalclock.qbs b/examples/widgets/widgets/digitalclock/digitalclock.qbs
new file mode 100644
index 0000000000..0e5c9892bb
--- /dev/null
+++ b/examples/widgets/widgets/digitalclock/digitalclock.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "digitalclock"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "digitalclock.cpp",
+ "digitalclock.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "widgets",
+ "digitalclock")
+ }
+}
diff --git a/examples/widgets/widgets/elidedlabel/elidedlabel.qbs b/examples/widgets/widgets/elidedlabel/elidedlabel.qbs
new file mode 100644
index 0000000000..cac4904587
--- /dev/null
+++ b/examples/widgets/widgets/elidedlabel/elidedlabel.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "elidedlabel"
+ condition: Qt.widgets.present && Qt.widgets.config.combobox
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "elidedlabel.cpp",
+ "elidedlabel.h",
+ "main.cpp",
+ "testwidget.cpp",
+ "testwidget.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "widgets",
+ "elidedlabel")
+ }
+}
diff --git a/examples/widgets/widgets/groupbox/groupbox.qbs b/examples/widgets/widgets/groupbox/groupbox.qbs
new file mode 100644
index 0000000000..32082be446
--- /dev/null
+++ b/examples/widgets/widgets/groupbox/groupbox.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "groupbox"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "window.cpp",
+ "window.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "widgets",
+ "groupbox")
+ }
+}
diff --git a/examples/widgets/widgets/icons/icons.qbs b/examples/widgets/widgets/icons/icons.qbs
new file mode 100644
index 0000000000..079ac38175
--- /dev/null
+++ b/examples/widgets/widgets/icons/icons.qbs
@@ -0,0 +1,31 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "icons"
+ condition: Qt.widgets.present && Qt.widgets.config.combobox
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ cpp.defines: base.concat('SRCDIR="' + sourceDirectory + '"')
+
+ files: [
+ "iconpreviewarea.cpp",
+ "iconpreviewarea.h",
+ "iconsizespinbox.cpp",
+ "iconsizespinbox.h",
+ "imagedelegate.cpp",
+ "imagedelegate.h",
+ "images/*",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "widgets",
+ "icons")
+ }
+}
diff --git a/examples/widgets/widgets/imageviewer/imageviewer.qbs b/examples/widgets/widgets/imageviewer/imageviewer.qbs
new file mode 100644
index 0000000000..2b2d61af42
--- /dev/null
+++ b/examples/widgets/widgets/imageviewer/imageviewer.qbs
@@ -0,0 +1,23 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "imageviewer"
+ condition: Qt.widgets.present && Qt.widgets.config.filedialog
+
+ Depends { name: "Qt.printsupport"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "imageviewer.cpp",
+ "imageviewer.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "widgets",
+ "imageviewer")
+ }
+}
diff --git a/examples/widgets/widgets/lineedits/lineedits.qbs b/examples/widgets/widgets/lineedits/lineedits.qbs
new file mode 100644
index 0000000000..0af4d7886f
--- /dev/null
+++ b/examples/widgets/widgets/lineedits/lineedits.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "lineedits"
+ condition: Qt.widgets.present && Qt.widgets.config.combobox
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "window.cpp",
+ "window.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "widgets",
+ "lineedits")
+ }
+}
diff --git a/examples/widgets/widgets/mousebuttons/mousebuttons.qbs b/examples/widgets/widgets/mousebuttons/mousebuttons.qbs
new file mode 100644
index 0000000000..471b3feab0
--- /dev/null
+++ b/examples/widgets/widgets/mousebuttons/mousebuttons.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "mousebuttons"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "buttontester.cpp",
+ "buttontester.h",
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "widgets",
+ "mousebuttons")
+ }
+}
diff --git a/examples/widgets/widgets/movie/movie.qbs b/examples/widgets/widgets/movie/movie.qbs
new file mode 100644
index 0000000000..376ec19d42
--- /dev/null
+++ b/examples/widgets/widgets/movie/movie.qbs
@@ -0,0 +1,23 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "movie"
+ condition: Qt.widgets.present && Qt.widgets.config.filedialog
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "animation.gif",
+ "main.cpp",
+ "movieplayer.cpp",
+ "movieplayer.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "widgets",
+ "movie")
+ }
+}
diff --git a/examples/widgets/widgets/scribble/scribble.qbs b/examples/widgets/widgets/scribble/scribble.qbs
new file mode 100644
index 0000000000..f0991d6327
--- /dev/null
+++ b/examples/widgets/widgets/scribble/scribble.qbs
@@ -0,0 +1,25 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "scribble"
+ condition: Qt.widgets.present && Qt.widgets.config.filedialog
+
+ Depends { name: "Qt.printsupport"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "scribblearea.cpp",
+ "scribblearea.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "widgets",
+ "scribble")
+ }
+}
diff --git a/examples/widgets/widgets/shapedclock/shapedclock.qbs b/examples/widgets/widgets/shapedclock/shapedclock.qbs
new file mode 100644
index 0000000000..aaef10dca6
--- /dev/null
+++ b/examples/widgets/widgets/shapedclock/shapedclock.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "shapedclock"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "shapedclock.cpp",
+ "shapedclock.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "widgets",
+ "shapedclock")
+ }
+}
diff --git a/examples/widgets/widgets/sliders/sliders.qbs b/examples/widgets/widgets/sliders/sliders.qbs
new file mode 100644
index 0000000000..db84e3315f
--- /dev/null
+++ b/examples/widgets/widgets/sliders/sliders.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "sliders"
+ condition: Qt.widgets.present && Qt.widgets.config.combobox
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "slidersgroup.cpp",
+ "slidersgroup.h",
+ "window.cpp",
+ "window.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "widgets",
+ "sliders")
+ }
+}
diff --git a/examples/widgets/widgets/spinboxes/spinboxes.qbs b/examples/widgets/widgets/spinboxes/spinboxes.qbs
new file mode 100644
index 0000000000..24b9fe8e00
--- /dev/null
+++ b/examples/widgets/widgets/spinboxes/spinboxes.qbs
@@ -0,0 +1,22 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "spinboxes"
+ condition: Qt.widgets.present && Qt.widgets.config.datetimeedit
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "window.cpp",
+ "window.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "widgets",
+ "spinboxes")
+ }
+}
diff --git a/examples/widgets/widgets/styles/styles.qbs b/examples/widgets/widgets/styles/styles.qbs
new file mode 100644
index 0000000000..2fd51251ec
--- /dev/null
+++ b/examples/widgets/widgets/styles/styles.qbs
@@ -0,0 +1,25 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "styles"
+ condition: Qt.widgets.present && Qt.widgets.config.combobox
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "norwegianwoodstyle.cpp",
+ "norwegianwoodstyle.h",
+ "styles.qrc",
+ "widgetgallery.cpp",
+ "widgetgallery.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "widgets",
+ "styles")
+ }
+}
diff --git a/examples/widgets/widgets/stylesheet/stylesheet.qbs b/examples/widgets/widgets/stylesheet/stylesheet.qbs
new file mode 100644
index 0000000000..b7e782f59a
--- /dev/null
+++ b/examples/widgets/widgets/stylesheet/stylesheet.qbs
@@ -0,0 +1,27 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "stylesheet"
+ condition: Qt.widgets.present && Qt.widgets.config.combobox
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "mainwindow.ui",
+ "stylesheet.qrc",
+ "stylesheeteditor.cpp",
+ "stylesheeteditor.h",
+ "stylesheeteditor.ui",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "widgets",
+ "stylesheet")
+ }
+}
diff --git a/examples/widgets/widgets/tablet/tablet.qbs b/examples/widgets/widgets/tablet/tablet.qbs
new file mode 100644
index 0000000000..f98e74d92e
--- /dev/null
+++ b/examples/widgets/widgets/tablet/tablet.qbs
@@ -0,0 +1,27 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "tablet"
+ condition: Qt.widgets.present && Qt.widgets.config.filedialog
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "images.qrc",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "tabletapplication.cpp",
+ "tabletapplication.h",
+ "tabletcanvas.cpp",
+ "tabletcanvas.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "widgets",
+ "tablet")
+ }
+}
diff --git a/examples/widgets/widgets/tetrix/tetrix.qbs b/examples/widgets/widgets/tetrix/tetrix.qbs
new file mode 100644
index 0000000000..5c4d8e13df
--- /dev/null
+++ b/examples/widgets/widgets/tetrix/tetrix.qbs
@@ -0,0 +1,26 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "tetrix"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "tetrixboard.cpp",
+ "tetrixboard.h",
+ "tetrixpiece.cpp",
+ "tetrixpiece.h",
+ "tetrixwindow.cpp",
+ "tetrixwindow.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "widgets",
+ "tetrix")
+ }
+}
diff --git a/examples/widgets/widgets/tooltips/tooltips.qbs b/examples/widgets/widgets/tooltips/tooltips.qbs
new file mode 100644
index 0000000000..22ba5f2be8
--- /dev/null
+++ b/examples/widgets/widgets/tooltips/tooltips.qbs
@@ -0,0 +1,25 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "tooltips"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "main.cpp",
+ "shapeitem.cpp",
+ "shapeitem.h",
+ "sortingbox.cpp",
+ "sortingbox.h",
+ "tooltips.qrc",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "widgets",
+ "tooltips")
+ }
+}
diff --git a/examples/widgets/widgets/validators/validators.qbs b/examples/widgets/widgets/validators/validators.qbs
new file mode 100644
index 0000000000..030dfac8db
--- /dev/null
+++ b/examples/widgets/widgets/validators/validators.qbs
@@ -0,0 +1,28 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "validators"
+ condition: Qt.widgets.present && Qt.widgets.config.combobox
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ cpp.includePaths: base.concat(".")
+
+ files: [
+ "ledwidget.cpp",
+ "ledwidget.h",
+ "localeselector.cpp",
+ "localeselector.h",
+ "main.cpp",
+ "validators.qrc",
+ "validators.ui",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "widgets",
+ "validators")
+ }
+}
diff --git a/examples/widgets/widgets/widgets.qbs b/examples/widgets/widgets/widgets.qbs
new file mode 100644
index 0000000000..ef42d24ab5
--- /dev/null
+++ b/examples/widgets/widgets/widgets.qbs
@@ -0,0 +1,32 @@
+import qbs
+
+Project {
+ name: "widgets"
+ references: [
+ "analogclock",
+ "calculator",
+ "calendarwidget",
+ "charactermap",
+ "codeeditor",
+ "digitalclock",
+ "elidedlabel",
+ "groupbox",
+ "icons",
+ "imageviewer",
+ "lineedits",
+ "movie",
+ "mousebuttons",
+ "scribble",
+ "shapedclock",
+ "sliders",
+ "spinboxes",
+ "styles",
+ "stylesheet",
+ "tablet",
+ "tetrix",
+ "tooltips",
+ "validators",
+ "wiggly",
+ "windowflags",
+ ]
+}
diff --git a/examples/widgets/widgets/wiggly/wiggly.qbs b/examples/widgets/widgets/wiggly/wiggly.qbs
new file mode 100644
index 0000000000..f3af51585e
--- /dev/null
+++ b/examples/widgets/widgets/wiggly/wiggly.qbs
@@ -0,0 +1,25 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "wiggly"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "dialog.cpp",
+ "dialog.h",
+ "main.cpp",
+ "wigglywidget.cpp",
+ "wigglywidget.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "widgets",
+ "wiggly")
+ }
+}
diff --git a/examples/widgets/widgets/windowflags/windowflags.qbs b/examples/widgets/widgets/windowflags/windowflags.qbs
new file mode 100644
index 0000000000..f52209d17f
--- /dev/null
+++ b/examples/widgets/widgets/windowflags/windowflags.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "windowflags"
+ condition: Qt.widgets.present
+
+ Depends { name: "Qt.widgets"; required: false }
+
+ files: [
+ "controllerwindow.cpp",
+ "controllerwindow.h",
+ "main.cpp",
+ "previewwindow.cpp",
+ "previewwindow.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets", "widgets",
+ "windowflags")
+ }
+}
diff --git a/examples/widgets/windowcontainer/windowcontainer.qbs b/examples/widgets/windowcontainer/windowcontainer.qbs
new file mode 100644
index 0000000000..a611a2370a
--- /dev/null
+++ b/examples/widgets/windowcontainer/windowcontainer.qbs
@@ -0,0 +1,32 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "windowcontainer"
+ condition: Qt.widgets.present && (Qt.gui.config.opengl || Qt.gui.config.opengles2)
+
+ Depends { name: "Qt.gui"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+
+ cpp.includePaths: base.concat("../../gui/openglwindow")
+
+ files: [
+ "windowcontainer.cpp",
+ ]
+
+ Group {
+ name: "sources from openglwindow"
+ prefix: "../../gui/openglwindow/"
+ files: [
+ "openglwindow.cpp",
+ "openglwindow.h",
+ ]
+ }
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "widgets",
+ "windowcontainer")
+ }
+}
diff --git a/examples/xml/dombookmarks/dombookmarks.qbs b/examples/xml/dombookmarks/dombookmarks.qbs
new file mode 100644
index 0000000000..31929a23e7
--- /dev/null
+++ b/examples/xml/dombookmarks/dombookmarks.qbs
@@ -0,0 +1,25 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "dombookmarks"
+ condition: Qt.widgets.present && Qt.xml.present && Qt.widgets.config.filedialog
+
+ Depends { name: "Qt.widgets"; required: false }
+ Depends { name: "Qt.xml"; required: false }
+
+ files: [
+ "jennifer.xbel",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "xbeltree.cpp",
+ "xbeltree.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "xml", "dombookmarks")
+ }
+}
diff --git a/examples/xml/htmlinfo/htmlinfo.qbs b/examples/xml/htmlinfo/htmlinfo.qbs
new file mode 100644
index 0000000000..d1a8cba4ca
--- /dev/null
+++ b/examples/xml/htmlinfo/htmlinfo.qbs
@@ -0,0 +1,21 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "htmlinfo"
+ condition: Qt.xml.present
+ consoleApplication: true
+
+ Depends { name: "Qt.xml"; required: false }
+
+ files: [
+ "main.cpp",
+ "resources.qrc",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "xml", "htmlinfo")
+ }
+}
diff --git a/examples/xml/rsslisting/rsslisting.qbs b/examples/xml/rsslisting/rsslisting.qbs
new file mode 100644
index 0000000000..87a386712b
--- /dev/null
+++ b/examples/xml/rsslisting/rsslisting.qbs
@@ -0,0 +1,24 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "rsslisting"
+ condition: Qt.network.present && Qt.widgets.present && Qt.xml.present
+ && Qt.widgets.config.treewidget
+
+ Depends { name: "Qt.network"; required: false }
+ Depends { name: "Qt.widgets"; required: false }
+ Depends { name: "Qt.xml"; required: false }
+
+ files: [
+ "main.cpp",
+ "rsslisting.cpp",
+ "rsslisting.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "xml", "rsslisting")
+ }
+}
diff --git a/examples/xml/saxbookmarks/saxbookmarks.qbs b/examples/xml/saxbookmarks/saxbookmarks.qbs
new file mode 100644
index 0000000000..df3733dd10
--- /dev/null
+++ b/examples/xml/saxbookmarks/saxbookmarks.qbs
@@ -0,0 +1,27 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "saxbookmarks"
+ condition: Qt.widgets.present && Qt.xml.present && Qt.widgets.config.filedialog
+
+ Depends { name: "Qt.widgets"; required: false }
+ Depends { name: "Qt.xml"; required: false }
+
+ files: [
+ "jennifer.xbel",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "xbelgenerator.cpp",
+ "xbelgenerator.h",
+ "xbelhandler.cpp",
+ "xbelhandler.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "xml", "saxbookmarks")
+ }
+}
diff --git a/examples/xml/streambookmarks/streambookmarks.qbs b/examples/xml/streambookmarks/streambookmarks.qbs
new file mode 100644
index 0000000000..3f0c94aa86
--- /dev/null
+++ b/examples/xml/streambookmarks/streambookmarks.qbs
@@ -0,0 +1,27 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "streambookmarks"
+ condition: Qt.widgets.present && Qt.xml.present && Qt.widgets.config.filedialog
+
+ Depends { name: "Qt.widgets"; required: false }
+ Depends { name: "Qt.xml"; required: false }
+
+ files: [
+ "jennifer.xbel",
+ "main.cpp",
+ "mainwindow.cpp",
+ "mainwindow.h",
+ "xbelreader.cpp",
+ "xbelreader.h",
+ "xbelwriter.cpp",
+ "xbelwriter.h",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "xml", "streambookmarks")
+ }
+}
diff --git a/examples/xml/xml.qbs b/examples/xml/xml.qbs
new file mode 100644
index 0000000000..5ddec1c90d
--- /dev/null
+++ b/examples/xml/xml.qbs
@@ -0,0 +1,13 @@
+import qbs
+
+Project {
+ name: "xml"
+ references: [
+ "dombookmarks",
+ "htmlinfo",
+ "rsslisting",
+ "saxbookmarks",
+ "streambookmarks",
+ "xmlstreamlint",
+ ]
+}
diff --git a/examples/xml/xmlstreamlint/xmlstreamlint.qbs b/examples/xml/xmlstreamlint/xmlstreamlint.qbs
new file mode 100644
index 0000000000..d74e684aa3
--- /dev/null
+++ b/examples/xml/xmlstreamlint/xmlstreamlint.qbs
@@ -0,0 +1,20 @@
+import qbs
+import qbs.FileInfo
+
+CppApplication {
+ name: "xmlstreamlint"
+ condition: Qt.xml.present
+ consoleApplication: true
+
+ Depends { name: "Qt.xml"; required: false }
+
+ files: [
+ "main.cpp",
+ ]
+
+ Group {
+ fileTagsFilter: ["application"]
+ qbs.install: true
+ qbs.installDir: FileInfo.joinPaths(Qt.core.examplesInstallDir, "xml", "xmlstreamlint")
+ }
+}
diff --git a/qbs/imports/QtExample.qbs b/qbs/imports/QtExample.qbs
new file mode 100644
index 0000000000..03a59964cb
--- /dev/null
+++ b/qbs/imports/QtExample.qbs
@@ -0,0 +1,15 @@
+import qbs
+import qbs.FileInfo
+
+QtProduct {
+ type: ["application"]
+
+ Properties {
+ condition: qbs.targetOS.contains("darwin")
+ bundle.isBundle: false
+ }
+ qbs.buildVariants: project.debugAndRelease ? ["release"] : []
+ aggregate: false
+
+ cpp.defines: []
+}
diff --git a/qtbase.qbs b/qtbase.qbs
index 6c08f0eef7..9642691f4b 100644
--- a/qtbase.qbs
+++ b/qtbase.qbs
@@ -65,7 +65,7 @@ Project {
property string qtbaseDir: path
references: [
- // "examples/examples.qbs",
+ "examples/examples-all.qbs",
"qmake/qmake.qbs",
"src/src.qbs",
"tests/tests.qbs",
diff --git a/src/corelib/corelib.qbs b/src/corelib/corelib.qbs
index c5f85db96c..616a90c863 100644
--- a/src/corelib/corelib.qbs
+++ b/src/corelib/corelib.qbs
@@ -81,6 +81,7 @@ QtModuleProject {
Depends { name: product.mkspecModule; condition: product.mkspecModule !== undefined }
property stringList generatedHeadersDir: importingProduct.buildDirectory + "/qt.headers"
+ property string examplesInstallDir: "examples"
property path resourceSourceBase
property string resourcePrefix: "/"