Commit Graph

1734 Commits

Author SHA1 Message Date
Fabian Kosmale 45d63800d7 Fix toplevel Qt build
All targets using the "shared" approach need special handling in
toplevel builds to ensure that AUTOMOC works.
Amends aa4897e017.

Fixes: QTBUG-98468
Change-Id: Ic0a6ee0ab43190e359ad7cfb7e7634d393ff0b03
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
(cherry picked from commit 953c1cf394)
2021-12-06 22:42:34 +01:00
Shawn Rutledge e17bfffc07 Add TapHandler.gesturePolicy: DragWithinBounds enum value; examples
On a touchscreen, right-clicking is not directly possible; so sometimes
a long-press gesture is used as a substitute. The next thing a UI
designer would want would then be a way of showing feedback that a
long-press is in progress, rather than simply waiting for the long-press
to occur and then surprising the user with some instant action.
For example, a menu might begin to open as the user holds down the
touchpoint; but before the long-press gesture is complete, the user can
simply release, to cancel the gesture and close the menu. The timeHeld
property could drive the animation, to avoid needing a separate
animation type; in fact the reason timeHeld exists is to make it easy
to emulate this sort of touch-press animation, like one that occurs on
touchscreens since Windows 7.

But after the menu is open, the user would probably expect to be able to
drag the finger to a menu item and release, to select the menu item. For
such a purpose, the existing gesture policies weren't very useful: each
of them resets the timeHeld property if the user drags beyond the drag
threshold; so if the user expects to drag and release over a menu item,
then the timeHeld property cannot drive the menu-opening animation,
because the menu would disappear as soon as the user drags a little.

So it makes more sense to have a gesturePolicy that acts like
WithinBounds, but also applies the same policy to the timeHeld property
and the longPressed signal. We don't care about the drag threshold:
if the user is holding down a finger, it's considered to be a
long-press-in-progress, regardless of how far it has moved since press
(as long as it stays within the parent's bounds).

An example of such a menu is added.  The menu must have TapHandler as
its root object, because it reacts to press-and-drag within some larger
item, larger than the menu itself.  For example such a menu could be
used in a canvas-like application (drawing, diagramming, dragging things
like photos or file icons, or something like that): dragging items on
the canvas is possible, but long-pressing anywhere will open a context
menu. But in this example so far, only the menu is implemented.
It's a pie menu, because those are particularly touch-friendly; but
perhaps for the mouse, a conventional context menu would be used.

[ChangeLog][QtQuick][Event Handlers] TapHandler now has one more
gesturePolicy value: DragWithinBounds; it is similar to WithinBounds,
except that timeHeld is not reset during dragging, and the longPressed
signal can be emitted regardless of the drag threshold. This is useful
for implementing press-drag-release components such as menus, while
using timeHeld to directly drive an "opening" animation.

Change-Id: I298f8b1ad8f8d7d3c241ef4fdd68e7ec8d8b5bdd
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2021-12-02 12:52:58 +01:00
Friedemann Kleint 0b2311a62b Scenegraph examples: Use suffix-less RHI constants
Complements 23dbe3d6e0.

Pick-to: 6.2
Change-Id: Ic1bda49a888b0580ac483d650b879a9ae843129b
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2021-11-23 18:42:51 +01:00
Thomas Hartmann 84b3e889b8 Add .qmlproject file for examples containing .ui.qml files
If an example contains ui.qml it should also have
a .qmlproject file for Qt Design Studio.

Pick-to: 6.2
Change-Id: I290838f5bf7c6d295ea7fecb6b1c689ad5b924e1
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2021-11-18 10:23:00 +00:00
Oliver Eftevaag 88dfbe0dea Rendercontrol example: use new cmake api
Updating the CMakeLists.txt files in the d3d11 and opengl version of
the example to use the new qt_add_qml_module() function instead of the
old qt_add_resources()

Task-number: QTBUG-98130
Pick-to: 6.2
Change-Id: Ida43e4b0c875951a85d754b3a96f88366b580e24
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2021-11-15 23:07:17 +01:00
Venugopal Shivashankar dc569a6189 Doc: Fix qdoc warnings
- Comment out \instantiates entries that refer to private C++ classes
- Fix clang-format and regexp warnings

Change-Id: I7228538715b9d34ab39e7c0f71155be7a277116a
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2021-11-14 23:47:54 +01:00
Oliver Eftevaag a155b3bc3e Model examples: use new cmake api
The models directory contains 3 subdirectories with an example project
in each.

This patch updates the CMakeLists.txt files to use qt_add_qml_module()
instead of the old qt_add_resources().

In order to achieve intercompatibility with both cmake and qmake, I had
to do some slight modifications to both the .qrc files and the url path
used to set the source to the QQuickView.

Task-number: QTBUG-98130
Pick-to: 6.2
Change-Id: I13d1c01a0eda181823f394bc2a4259ce98abd4f8
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2021-11-12 12:24:29 +01:00
Oliver Eftevaag fe59c788a6 painteditem: better error message when running cmake on textballoon
Building the TextBalloon in isolation doesn't make any sense.
Its purpose is to implement a delegate, for the painteditem example to
use, and should therefore only be built as part of the painteditem
project.

To build the example, cmake should be invoked with
examples/quick/customitems/painteditem/CMakeLists.txt as its source
path.

The CMakeLists.txt in examples/quick/customitems/painteditem/TextBalloon
should only be used from another CMakeLists.txt file via the
add_subdirectory() command. If invoked directly it makes sense to print
an error message and stop processing.

Task-number: QTBUG-96806
Pick-to: 6.2
Change-Id: I1ebd2157790afbf7307498a4fb64049794ae6c5b
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2021-11-11 13:11:40 +02:00
Oliver Eftevaag fb26412952 Embeddedinwidgets example: use qt_add_qml_module()
We want to use the new cmake api, rather than qt6_add_resources()

Task-number: QTBUG-98130
Pick-to: 6.2
Change-Id: I567aec77b963adce03fb683c244d758880891ce5
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2021-11-11 11:11:40 +00:00
Oliver Eftevaag 750e7d946c Keyinteraction example: use qt_add_qml_module() in CMakeLists.txt
We want to use the new cmake api instead of qt6_add_resources()
The file structure has also been flattened a bit.

Task-number: QTBUG-98130
Pick-to: 6.2
Change-Id: I1651d25e2902bf6932b78c2224ee4ffe454b658d
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2021-11-11 12:11:40 +01:00
Oliver Eftevaag 28bfd773ca MouseArea example: use qt_add_qml_module() and update a signal handler
Thing patch updates the CMakeLists.txt file to use qt_add_qml_module()
instead of qt6_add_resource().

Additionally, it changes a signal handler, which was previously a plain
statement, into a js function, which is the preferred way to write signal
handlers.

Task-number: QTBUG-98130
Pick-to: 6.2
Change-Id: I1b08dcd3eae370d78587aa3d37d9456437b54b42
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2021-11-11 11:11:40 +00:00
Oliver Eftevaag aa4897e017 Particle examples: use new cmake api
The particles directory contains 5 different examples
and a shared directory with some images files.

This patch changes the examples to use qt_add_qml_module()
in the CMakeLists.txt project files, and changes the .qrc
files to directory reference the files needed by the individual
projects, which removes the need for images.qrc.
(The .pro files still reference the shared.qrc file)

The "content" directories located in the different example
projects, have been removed, and the containing files have simply
been moved to the parent directories instead.

Some unused files in the itemparticle example have also been
deleted. This example looks very outdated and should ideally
be improved, or perhaps simply removed, but I decided to leave
it for now.

Task-number: QTBUG-98130
Pick-to: 6.2
Change-Id: If05986b4347814715bca50b8d3f6a5cddbf9ced4
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2021-11-11 12:11:40 +01:00
Mitch Curtis 5e8e12b342 Fix CMakeLists.txts of chattutorial
- Run pro2cmake.py on each .pro and did some manual adjustments.
- Rename directories to simplify resource paths, URIs, etc.
- Rename executables to ensure they're distinguishable from other
  targets in Creator's locator.
- Duplicate images into each example due to issues with resources.
- Now that we use qt_add_qml_module, the qtquickcontrols2.conf
  file will no longer be at the resource root, so specify it
  separately with qt6_add_resources.
- Update qmake files.
- Fix documentation.

Task-number: QTBUG-98130
Pick-to: 6.2
Change-Id: I210ef2cbcd45dd7f4df881332174bff1b18c5be7
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2021-11-09 18:55:15 +01:00
Friedemann Kleint c442ed4d65 Polish the QML reference examples
- Use member initialization, which allows for using
  constructors from the base classes
- Use qsizetype for indexes
- Use qInfo() instead of qWarning() for printing
- Add spaces/fix formatting

Pick-to: 6.2
Change-Id: Iebce1b810ce00f29395207d93303363b3b71e52e
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2021-11-04 10:51:39 +01:00
Mitch Curtis dbf7048ae2 Add calendar types
Formerly Qt.labs.calendar, then QtQuick.Calendar in the marketplace,
this now returns as part of the controls module.

[ChangeLog] Added types from Qt.labs.calendar/QtQuick.Calendar.

Change-Id: I8a06c08e6520be1ba8f33c73ba174785724e99c2
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2021-11-03 11:40:59 +01:00
Ulf Hermann d7862eac1b Update examples to use new PropertyChanges
Also, prefer the multi-line syntax over ';'-separated bindings for
readability.

Change-Id: I3d6eb854e514ee257ca83773a11e6e9e10770bff
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2021-11-03 09:14:48 +01:00
Andrei Golubev 3f2816ff6e rendercontrol_d3d11: Explicitly include qt_windows.h
Prevent accidental inclusion of windows.h through d3d11_1.h where
max/min are defined as macro. That causes the subtle error elsewhere
within the example

Change-Id: I527c53ecbc82204a1f087719f5b0b4736d8c3447
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2021-10-29 17:49:13 +02:00
JiDe Zhang 85b5413dc4 Avoid unnecessary color format conversion
If a color is not the rgb format, when QColor::red() QColor::blue()
QColor::green() is used continuously to obtain the values of different
channels, three times color conversions will occur. Therefore, use
QColor::toRgb() before that to ensure that only one conversion is
performed at most. Not only rgb, the conversion of other formats is the
same.

Change-Id: Ia969e1ca6f1524ad5d7e8dec915bcbc407875c66
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2021-10-29 18:59:48 +08:00
Ivan Tkachenko e4308747d3 Fix indentation in positioners example
Pick-to: 6.2 5.15
Change-Id: I5a39ba9361503cd5d7ce2e6da59d7807d540bee5
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2021-10-28 07:16:40 +03:00
Shawn Rutledge cc18223e0b Remove import versions from qml files in the pointerhandlers example
Many of these are portable to Qt 5; but we don't need the version
numbers in Qt 6, and the components that use "palette" refer to
Item.palette, which was added in Qt 6.

Pick-to: 6.2
Change-Id: Ic799fba5dd66db51a8808c52dce01d27c6da62bb
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2021-10-27 12:35:15 +00:00
Shawn Rutledge c61cfa8487 Fix pointerhandlers/fakeFlickable example
TapHandlerButton is not in this example: we just call it Button.
Amends 8503f884bb

Pick-to: 6.2
Change-Id: I49bc6081f05642cd938a257c14c10497bfafb8a8
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2021-10-26 12:04:34 +02:00
Oliver Eftevaag e2532e8773 Pointerhandlers example: fix CMakeLists.txt linking error
Fixes: QTBUG-97466
Pick-to: 6.2
Change-Id: I9bb0b79b12cbd43209f56137bbdb67ca2457ca6c
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2021-10-26 10:03:30 +00:00
Luca Di Sera 325938018b Remove deprecated usage of QQmlFileSelector::get in texteditor example
The text editor example adds a "touch" file selector to the qml engine
that is used for the application such as to be able to provide an
interface for touch based devices.

The extra selectors were added by retrieving the engine's file selector
trough QQmlFileSelector::get, which was deprecated in Qt 6.0, see commit
75563fa761.

This resulted in a deprecation warning when the example was built.

To avoid the warning and the use of deprecated methods in examples, the
example was modified to use the suggested replacement, `QQmlApplicationEngine::setExtraFileSelectors`.

A line suggesting the use of the deprecated method was removed
from `QQmlFileSelector`'s documentaton page.

Fixes: QTBUG-97462
Pick-to: 6.2
Change-Id: I6ee0306647fe16e75c2cd72f3b37be6c7c5f9261
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2021-10-22 07:36:35 +00:00
Allan Sandfeld Jensen 72c3befaa2 Replace 0 pointer constants with nullptr
Replaced in most common patterns.

Change-Id: Idcaff1f2e915f29922702d3600a2e5f1e2418a7a
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2021-10-18 12:39:28 +02:00
Mitch Curtis f60e514300 chattutorial: fix build without SQL
Pick-to: 6.2
Change-Id: I68d1a2c42cde55ed9d370411943c2cb006355186
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-10-15 15:45:16 +02:00
Shawn Rutledge eca6bd4854 Implement horizontal rule rendering in text
The rule is just a line drawn with the same thickness as an underline:
it gets thicker as DPR increases.

A horizontal rule can be created via <hr/> in RichText.
In markdown it's called a "thematic break," and a line with
- - -
is one way to create it: https://spec.commonmark.org/0.30/#thematic-breaks
<hr width=70/> or <hr width=70%> set the width in pixels, and percent
of the text width, respectively; the rule will be centered within the
line's bounding box in that case, as in QTextEdit etc.

The color can come from QTextFormat::BackgroundBrush if it's set
on the QTextBlockFormat, but otherwise falls back to the text color.
This can be done with CSS styling: <hr style="background-color:green;"/>

[ChangeLog][QtQuick][Text] Horizontal rules (thematic breaks in markdown)
are now rendered as simple horizontal lines, either in the same color
as the text, or as specified via CSS background-color.

Fixes: QTBUG-74342
Task-number: QTBUG-81306
Change-Id: I64f9daf28994225d1a8383d8e2e01e611a0a0237
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2021-10-14 20:55:59 +02:00
Edward Welbourne d8ce3b7f61 Fix typo: alignment has an n in it
Change-Id: Ibe0ef16609a704042b964b4c29078c462820e602
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2021-10-13 18:58:22 +02:00
Oliver Eftevaag b128136f80 DragAndDrop example: Update CMakeLists.txt
This commit updates the drag and drop example to use qt_add_qml_module()
in its CMakeLists.txt file.

Pick-to: 6.2
Change-Id: I47fd28a1a114fe70986f73d4f2d87265255652a0
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2021-10-06 01:03:51 +02:00
Shawn Rutledge 8fc3c036de Flickable manual test: add sliders to adjust flick-speed metrics
The sliders adjust maximumFlickVelocity and flickDeceleration.

Also in the shared Slider: try harder to end up with value being
the same as init, after initialization, by making the range of movement
divisible by more numbers, by default.  180 is highly divisible, and
keeps the default Slider size reasonable.  You can still override the
size of the Slider arbitrarily, though.

Task-number: QTBUG-97055
Change-Id: I6fb41ccb87e401a747d5a8add3100053a06d9d88
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2021-10-04 15:53:33 +02:00
Alexandru Croitor d5e8a697f8 CMake: Fix wrongly copy-pasted dependency in example
Amends edc4357ae4

Pick-to: 6.2
Task-number: QTBUG-96805
Change-Id: Iedbf372cd94b1b04db55685a5d05daca491200fe
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2021-10-01 14:04:01 +02:00
Oliver Eftevaag cba55a2f08 TextEditor: Clean up example and use quick dialogs
The text editor example is dependent on Qt.labs for its dialogs and
native menus.

The long term goal is to remove the Qt.labs dependency, and replace it
with components from QtQuick.

Currently we have a file and a font dialog, that should be used instead
of the Qt.labs dialogs.

I'm also replacing some of the properties in the DocumentHandler, since
I don't think it makes sense for the font to be limited to only a few
font weights and styles (which can be selected through the font dialog).
Selecting the most common font weight and style is still possible
using the bold and italic shortcuts and toolbar buttons.

Some more features includes:
* An additional toolbar button, which can be used to strikeout the
  selected font. This required adding an additional glyph to
  fontello.ttf.
* When coupled with the fix for QTBUG-96934, the font for the current
  selection should automatically update the listviews in the font dialog
  to select the correct family, style, sizes and effects for what is
  selected in the document handler.

Fixes: QTBUG-95976
Pick-to: 6.2
Change-Id: I2907a2270e2a139b1ccb3fcb3ce3a788306a42e3
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2021-09-29 23:16:33 +02:00
Shawn Rutledge 0c4851e12b doc: Replace qmlscene with qml
We deprecated qmlscene in a9c93e2716
so we should stop recommending it in docs, too.

Task-number: QTBUG-53219
Pick-to: 6.2
Change-Id: Ic729624a8ef849bd13f38087e20b5a410c5c5756
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2021-09-29 23:16:33 +02:00
Alexandru Croitor 73d8a2c016 CMake: Fix textballoon example when using a shared Qt on macOS
Copy the qml plugin into the macOS app bundle just like we do for the
examples that use the 'shared' project using the new
add_qml_module_to_macos_app_bundle helper function.

Amends 79cae5f652

Pick-to: 6.2
Fixes: QTBUG-96805
Change-Id: Ib22131a15f0cd06a7888ec991f5ec9f79045d202
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2021-09-29 16:14:44 +02:00
Alexandru Croitor 7ab424a5cd CMake: Refactor bundle_shared into a more reusable function
Refactor the logic of bundle_shared into a more reusable
add_qml_module_to_macos_app_bundle function that can be used in
QtQuick examples that need to bundle the qml plugin on macOS, but don't
use the 'shared' qml module plugin.

The new function is placed in a QtBundleQmlModuleForMacOS.cmake file
which can be included separately from the shared/CMakeLists.txt
project.

Amends 633a85cd39

Pick-to: 6.2
Task-number: QTBUG-96805
Change-Id: Iebb3f4734b9a6bd8a8316bf5ae01d9740c442645
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2021-09-29 16:14:44 +02:00
Alexandru Croitor d73f98b1b5 CMake: Fix textballoon example when using a static Qt
Don't pre-create a qml module backing library, don't link to it
directly and instead rely on regular qml plugin loading.

This avoids undefined linker errors.

Amends 79cae5f652

Pick-to: 6.2
Fixes: QTBUG-96805
Change-Id: I77acd086257e27e1933e9b36d7f0212765afceb3
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2021-09-29 16:14:44 +02:00
Alexandru Croitor edc4357ae4 CMake: Fix examples that use 'shared' project when using a static Qt
When using a static Qt, linking of examples that use the 'shared' Qml
module would fail with the following error

Undefined symbols for architecture x86_64:
  "qt_static_plugin_sharedPlugin()", referenced from:
  StaticsharedPluginPluginInstance::StaticsharedPluginPluginInstance()
  in window_shared_init.cpp.o

This happened because the 'shared' project pre-created its
plugin target with qt_add_library instead of qt_add_plugin.

qt_add_plugin passes an additional QT_STATICPLUGIN compile definition
when compiling the moc'ed file to ensure that the QT_MOC_EXPORT_PLUGIN
macro creates a qt_plugin_instance_PLUGIN_NAME symbol.

Unfortunately we can't use qt_add_plugin for shared Qt builds, because
some of the projects link directly against the plugin target and it's
not possible to link against a MODULE_LIBRARY target which
qt_add_plugin creates in shared Qt build.

We could try to conditionally switch between using qt_add_library for
a shared Qt build and qt_add_plugin for a static Qt build, but that
further complicates the build system code because it requires
specifying a class name and plugin type explicitly.

Remove the direct linkage against the libraries in the examples and
instead rely on plugin loading.
This simplifies the logic of not having to pre-create a target.

Amends 7b6eea37ae

Pick-to: 6.2
Fixes: QTBUG-96805
Change-Id: I5b2f3992ccda29b59f1e99748005381c73daca69
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2021-09-29 16:14:44 +02:00
Alexandru Croitor 2a04bfaf3a CMake: Ensure proper dependencies in bundle_shared
Ensure the shared qml module is built before it is bundled into the
app's bundle dir on macOS.

Pick-to: 6.2
Change-Id: I0b93fc54d1caa86070335347f5d2735eafe6819a
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2021-09-29 16:14:44 +02:00
Shawn Rutledge e57ba6916e Large Text: populate only lines visible in Window into SG
Text is rendered top-to-bottom: QQuickTextNode::addTextLayout()
iterates lines of text.  Now it first maps the window size() rectangle
into the Text item's coordinate system, and treats that as the viewport:
lines whose y coordinates fall outside are omitted.
This saves a huge amount of time and memory when the text is large.
So Flickable { Text { } } can actually be used in an ebook reader now,
for example.

QQuickItemPrivate::transformChanged(parent) is now used to inform
all children when a parent moves; so e.g. when a content item is
moved inside a "viewport" item (like a Flickable, or any other item
that is being used as a clipping viewport or just as a holder),
all children of the content item will be notified; and QQuickTextPrivate
uses this occasion to mark itself dirty so that the updatePaintNode()
will be called again.  This happens directly after the actual movement:

  QQuickTextPrivate::transformChanged  qquicktext.cpp        2990
  QQuickItemPrivate::transformChanged  qquickitem.cpp        5200
  QQuickItemPrivate::dirty             qquickitem.cpp        6339
  QQuickItem::setY                     qquickitem.cpp        6830
  QQuickFlickablePrivate::setViewportY qquickflickable.cpp   1800

Task-number: QTBUG-60491
Task-number: QTBUG-90734
Change-Id: I152d23caa725f194a186a604fbc8d0c07f597b16
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2021-09-29 16:14:44 +02:00
Ivan Tkachenko f5fc1d556d Use strict === equality for ScrollBar::orientation
Pick-to: 6.2
Change-Id: Icaf1bcda4a996cc3348911c87e43c4af2a246d73
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2021-09-27 16:30:02 +03:00
Shawn Rutledge d5fb3c9a61 Shapes interactive example: use Controls canonically; architecture
As long as we had the funcs array, it would have been nice to be able to
directly get an index from whatever "tool" is selected. For example,
TabBar has currentIndex; but TabBar is otherwise not a great fit here.
But the funcs array wasn't so elegant anyway.

So that prompts switching to the known OO design pattern in which
drawing tools are objects containing functions that "do" the drawing, so
that there's no conditional dispatch: just ask the tool to handle each
mouse state change. I.e. here the DragHandler on the canvas uses the
tool's shapeType Component to create the shape, but the DragHandler
doesn't have to care which shape it is.

Handles for moving the shapes' control points are also shape-agnostic:
- a handle is a sort of template taking the path x and y properties to
  read and write
- the handle initializes its position from those properties
- the DragHandler inside gets to do what it does best: just drag the
  handle, nothing else (instead of needing to script the movement of
  both the handle and the control point, we don't script either one)
- declarative bindings on the handle's position update the path
  properties whenever the handle moves

And some styling:
- Switch looks better than Button for toggling
- use palette colors so that it looks good in dark mode too
- fix handle colors getting stuck on yellow
- borders on handles (yellow on white makes it hard to see the edge otherwise)
- reorder curve types by mathematical order (line, quadratic, cubic)

Pick-to: 6.2
Change-Id: Iefd980f428601840deb55370aad9256748855f07
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2021-09-27 10:55:47 +02:00
Shawn Rutledge 8503f884bb Move most of the pointer manual tests to a new pointerhandlers example
They were always meant to be examples eventually. Now they will be used
for an example of how to implement custom controls using only basic
items and handlers. Some components are very similar to those in
the shared directory; but most examples will use Qt Quick Controls,
so those shared components can be removed when we no longer use them.
This example should remain as the one that shows how to build
reusable controls "from scratch".

Removed InputInspector because it's inefficient, has limited usefulness,
tends to require building the manual test to be able to run it, and
could be better built as a reusable Qt.labs component later on,
providing a model with all known devices and taking advantage of the
QPointingDevice::grabChanged signal to track the grab states rather
than polling.

Pick-to: 6.2
Change-Id: I47ab6ebb2cecab07a69cf96e546ffd0db3026a60
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2021-09-24 17:03:19 +02:00
Shawn Rutledge 38ac4b4ec2 Shapes example: give each qml file's root item a default size
Each square is resized anyway in shapegallery.qml; but for the sake of
running individual examples on the command line with qml, the content
being shown should be visible. Without this fix, each item had a 0,0
size by default; but the shapes themselves have their own sizes and are
centered in the zero-size root item. But when a window is created, the
window system does not allow it to have zero size, so it expands; and
then the shape would be centered at the top-left corner, and you could
only see part of it.

Pick-to: 6.2
Change-Id: I42a537421430aea8233106353e9c2033f5bc5774
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2021-09-22 20:39:52 +02:00
Oliver Eftevaag 9025ea98ca Gallery example: remove binding loop from TextArea page
The width binding for the TextArea was didn't make a lot of sense.
It used to be limited by the panes availableWidth / 3, but if the
implicitWidth was less, the text would move towards the center, since
the anchors are centering the TextArea horizontally.

Setting the width to just always be the panes availableWidth / 3,
simplifies the binding, removes the binding loop, and doesn't move the
visible text towards the center when the implicitWidth is less than 1/3
of the panes availableWidth.

Note that this doesn't directly fix QTBUG-91109, because QTBUG-91109
isn't really a bug to begin with.

Pick-to: 6.2
Fixes: QTBUG-91109
Change-Id: I5b6de8dfd11fd726e8ffdae0e46143c448985dc4
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2021-09-13 14:42:09 +02:00
Fabian Kosmale deccfa4636 Fix toplevel build again
delegatechooser_shared also uses the shared directory, and thus needs
the workaround.
Amennds f4760b48bb.

Pick-to: 6.2
Change-Id: If05694c2608b0e0a86993f0f2ace7b1640d039c7
Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
2021-09-08 14:41:20 +02:00
Craig Scott f4760b48bb Fix top level builds failing with AUTOMOC-related missing moc exe
In top level builds, qt_autogen_tools() needs to be called on any
target that enables AUTOMOC. A previous commit fixed that problem for
the qt_target_qml_sources_example target, but missed also fixing it for
the associated plugin target. Add that missed call here.

More examples that use the common "shared" quick directory have also
since been added, but the step that ensures qt_autogen_tools() was
missed. Add them to the missing step. One of the existing steps also
had a typo, which meant it wasn't handled either, so correct that as
well.

Amends 067253fb2f

Task-number: QTBUG-96118
Task-number: QTBUG-96159
Change-Id: I2fae5d9a1fd474b22e01ec51d5b1030237f3e08f
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
(cherry picked from commit 215dea1bfc)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2021-09-07 11:42:11 +00:00
Fabian Kosmale 011ee2dfec Examples: Fix top level build
Examples using the "shared" pattern need to be recorded in the list in
examples/quick/CMakeLists.txt, so that we do the necessary AUTOMOC
handling for them in a top level build. For details, see the commit
which introduced that list.
Amends 34bc389543.

Pick-to: 6.2
Change-Id: I6945b0c8445fe436da259dd240342e1c3b5cbf26
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Craig Scott <craig.scott@qt.io>
2021-09-07 13:42:10 +02:00
Oliver Eftevaag 2cd4391ba0 Fix layouts example to use a QML module
Changing the CMakeLists.txt file to use qt_add_qml_module().

Pick-to: 6.2
Change-Id: Icafe9359494136af6d5f3befaa9e767ab12deb30
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2021-09-06 21:23:00 +02:00
Oliver Eftevaag 06e96fdcde Fix positioners example to use a QML module
This fix changes the CMakeLists.txt file to use qt_add_qml_module().

It also updates copyright headers and changes import statements to
remove version numbers. This causes the example to use qt quick
controls 2, rather than qt quick controls 1, which is obsolete, and
should no longer be used by any of our examples.

Pick-to: 6.2
Change-Id: I1e40990b3a184c73b67a2ab04b4ec555774b8a1b
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2021-09-06 14:03:11 +02:00
Oliver Eftevaag 56b47052b8 Fix righttoleft example to use a QML module
Updated CMakeLists.txt to use qt_add_qml_module().

Copyright headers and import statements have also been updated.

Pick-to: 6.2
Change-Id: I8093d186f433293e63c6330def579f5589a938e6
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2021-09-06 14:03:11 +02:00
Ulf Hermann 79cae5f652 Clean up the painteditem example
The way it was before it was unusable. Move the files that belong to the
TextBalloon module into their own directory, and add a wrapper
application that loads textballoons.qml with the right parameters to
actually find the TextBalloon module. Make sure that the qmldir file is
copied to the output directory.

Pick-to: 6.2
Change-Id: Ie7407a425a0a95a46de6486f9a28fd1aee07de9f
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2021-09-06 11:03:09 +02:00
Ulf Hermann 485416c9d5 Fix delegatechooser example to use QML modules
We need to rephrase the image source selection due to ListElement only
accepting literals. We can't just poke into the qrc file system of the
"shared" module without importing it.

Pick-to: 6.2
Change-Id: I54d3fa4daf304afc9a0a55ab8b590d9c5ad20aa2
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2021-09-06 11:03:09 +02:00
Ulf Hermann be260ba529 Fix dynamicscene example to use a QML module
Pick-to: 6.2
Change-Id: I23b87b8ca98721cebc0dc948f0c9bbf741af6cd5
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2021-09-04 08:48:15 +02:00
Ulf Hermann a57d3a0beb Fix the canvas example to use a QML module
Pick-to: 6.2
Change-Id: I84445909adafbd2cf0f5654fa78a005ed243536f
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2021-09-04 08:47:17 +02:00
Ulf Hermann 65b2e46423 Fix animation example to use a QML module
Pick-to: 6.2
Change-Id: Ic53194b43eb651438d3f89bbb5dfbb97aff8b606
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2021-09-04 08:47:07 +02:00
Ulf Hermann e11c320029 Update text example to use QML modules
Pick-to: 6.2
Change-Id: If1c8455aa823eb432f10586bdb31a65166ed915d
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2021-09-04 08:46:56 +02:00
Ulf Hermann 23ddc51e5e Fix threading example to use QML modules
Pick-to: 6.2
Change-Id: I973244a0546e668ba8c65e573747e08f60a506c0
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2021-09-04 08:46:37 +02:00
Oliver Eftevaag 34bc389543 Fix ImageElements example to use a QML module
Removed the 'content' directory, and placed all images into a 'pics'
directory.

CMakeLists.txt is now also using qt_add_qml_module()

Pick-to: 6.2
Change-Id: I673b7adea1832f304003f95e171118b0822b3c83
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2021-09-03 17:10:32 +02:00
Ulf Hermann 633a85cd39 Install the "shared" example module into macOS bundles
If we build an application bundle we cannot rely on the relative path
between the application's and the shared module's output directories.

This is somewhat ugly, but as we don't have a comprehensive solution for
building application bundles, yet, it's the best we can do right now.

In order for the shared bundle to be loaded from the PlugIns directory,
we need to add the PlugIns directory to the import path on macOS.

Pick-to: 6.2
Change-Id: I5b952420b4bb60af74886a140fa2c6a263d2f730
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2021-09-03 13:04:55 +02:00
Craig Scott 920a5f727b Fix top level builds where AUTOMOC_EXECUTABLE was unset on some targets
The qt_example_build_end() command tries to recursively find all build
system targets by descending into all source directories. Some sets of
examples re-use the same source directory multiple times with different
build directories, but this hides all but one of those re-used source
directories from the recursive search. This resulted in some targets
being missed, which in turn prevented qt_autogen_tools() from being
called on them. In top level builds, this meant AUTOMOC_EXECUTABLE
wasn't set, so CMake tried to verify the moc it wanted to use, which
doesn't exist for the first configure of a top level build, resulting
in a fatal error. Since we can't find all targets reliably with a
recursive search, manually handle the ones that could be missed.

There was a similar problem with qt_autogen_tools() not being called
for a target created to compile a doc snippet. The error message is
the same as the case above, the cause is again AUTOMOC_EXECUTABLE
not being set, but for a different reason. Apply the same fix and
call it manually, which should have been the case originally.

Fixes: QTBUG-96118
Fixes: QTBUG-96159
Pick-to: 6.2
Change-Id: I079c696cf74f77d7caa2c59e6263d3fb1c55d20e
Reviewed-by: Maximilian Goldstein <max.goldstein@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2021-09-03 19:37:06 +10:00
Oliver Eftevaag 713bb3ce8f Clean up flipable example
Turning the project structure to be inline with Ulf's ideas.
Such as using qt_add_qml_module().

Previously the path to 5_heart.png and 9_club.png were broken.
This patch updates the path in the qml file, in order to make sure that
the resource is actually loaded.

It also adds a CMakeLists.txt, since it didn't already have one.

Pick-to: 6.2
Change-Id: I4b2ffbfcfff7d2d63d7aab9fd7b40f77c1a1073c
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2021-09-03 10:52:09 +02:00
Oliver Eftevaag 5d751f3ce6 Simplify the XmlHttpRequest example
The XmlHttpRequest example contains a lot of unnecessary code, and I
felt that most of it could just be removed.

The point of the example project is to showcase how to use the
XMLHttpRequest javascript object to make requests.

Which is why I felt that we could remove any outside dependencies for
the project (like the LauncherList from the 'quick/shared' directory),
and reduce the amount of components down to the minimum.

Fixes: QTBUG-95734
Pick-to: 6.2
Change-Id: I9b062f4d7e942db4a2669a8c65f7488aa4a54740
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2021-09-03 10:39:37 +02:00
Oliver Eftevaag b0e567e7e3 Fix localstorage example to use a QML module
Removing the directory 'localstorage' that is inside the top-level
'localstorage' directory, and moving the content one level up in the
file hierarchy.

Pick-to: 6.2
Change-Id: I97cf1ff92be9860d9a92bce66c88af927618e2b0
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2021-09-03 10:39:22 +02:00
Topi Reinio 5e6777be1d Doc: Fix documentation warnings in qtdeclarative
* QtLabsPlatform has its own documentation project, but its source
  directory was pulled into QtQuick docs, causing duplicate generation
  and warnings.

* Fix \snippet paths for files that were renamed/moved around.

* Clean up .qdocconf files, use the {,} syntax to set identical values
  for multiple variables.

* Fix incorrect \sa link.

Pick-to: 6.2
Fixes: QTBUG-96125
Change-Id: I4c83787ac23a5b40019c74d46ee87c968a8d4907
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
2021-09-03 10:16:39 +02:00
Craig Scott 2e04ba2994 Disable quick examples currently breaking top level builds
The add_subdirectory("../shared" "shared") pattern used by these
examples seems to somehow trigger an AUTOMOC-related generation error.
The cause is not currently known, so this change temporarily disables
those tests until a proper fix can be found.

Task-number: QTBUG-96159
Change-Id: I2525b77d0a25c3e3191ae2956857acabc0aedbf5
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
(cherry picked from commit d83c303b95)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2021-09-01 21:28:34 +00:00
Shawn Rutledge 270a6f9bba Rename shapes example qml files according to what they demonstrate
The order they are shown in the grid is not important; but users should
be able to run any of these qml files directly without building the
example, and appropriate names make the "right one" easier to find.

Task-number: QTBUG-95739
Pick-to: 6.2
Change-Id: I9751b52ce80bc08e12919ca3396c9d428d700a04
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2021-09-01 18:11:54 +02:00
Ulf Hermann 2dfb912058 Fix dialcontrol example to use a QML module
Also move the QML files out of the "content" subdirectory in order to
avoid the directory import.

Pick-to: 6.2
Change-Id: I84a1f5ef1a45e5098ec3213c6fbce06346f3606a
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2021-09-01 11:49:15 +02:00
Ulf Hermann 66c011c558 Clean up shapes example
Drop the confusing alias mangling on all the QML files. Instead move
them into the base "shapes" directory. Also, use a QML module in CMake
and use the "shared" module as intended.

Pick-to: 6.2
Change-Id: I6a8fc3f2b2f86f58a54e188cf83ec7e2d4e8f468
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2021-09-01 11:49:06 +02:00
Oliver Eftevaag 9556a46743 Fix ExternalDragAndDrop example to use qt_add_qml_module()
Pick-to: 6.2
Change-Id: Ic368ce6e36ee41aff519a3ae106d18670c05bb54
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2021-08-31 23:19:51 +02:00
Ulf Hermann c10427bc04 Convert dynamicview tutorial to use QML modules
Pick-to: 6.2
Change-Id: I98069eea1bd4492aba661e4672ffe297f0dcc4c8
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2021-08-31 23:19:51 +02:00
Ulf Hermann 255d8a84b3 Fix shadereffects example to use a QML module
Pick-to: 6.2
Change-Id: I3787fdfebfa1e376c2891f16f3fcf4f29f0e26d4
Reviewed-by: Maximilian Goldstein <max.goldstein@qt.io>
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
2021-08-31 21:20:14 +02:00
Ulf Hermann 405bbc1c0e Remove .prev_CMakeLists.txt
We don't need to use pro2cmake anymore here.

Pick-to: 6.2
Change-Id: Iba8bac70c1fe31e56bf9680608913cc2c336f946
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2021-08-31 11:26:11 +02:00
Oliver Eftevaag 71a781beb1 DynamicView4 tutorial: add forgotten file to qrc
The FileSelector.qml component for some reason were never added to the
qrc file, which meant that it didn't exist in the eyes of qmake.

It should now be possible to run the program.

Pick-to: 6.2
Change-Id: Iaab67860123e926456c99b775449648f5d8e7c3c
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2021-08-31 11:26:10 +02:00
Ulf Hermann a3ea7a9938 Fix samegame example to use QML modules
In this case it really makes no sense to use a shared directory because
we want to show the progressive changes between the different versions.
It's actually important to note that we're adding the pictures one by
one. Therefore, the shared directory is dissolved and the pictures added
duplicated into the respective versions of samegame.

Furthermore, moving the code into a "content" directory is a bad idea
because it complicates the import logic. We don't want to make the
"content" directory its own QML module. We might move samegame.qml into
the "content" directory, too, and apply some path wrangling to make it
work, but it's really not worth it here.

Pick-to: 6.2
Change-Id: Ifc45f48832596377c21bc6ef55e918ef487bc94e
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2021-08-31 11:26:10 +02:00
Alexandru Croitor 9cbf4d2cc8 CMake: qmake: Fix chapter6-plugins example to build in more configs
Before this change, I tested the following configurations / scenarios

 (1) shared Qt + qmake + macOS bundle -> works
 (2) shared Qt + CMake + macOS bundle -> broken
 (3) static Qt + qmake + macOS bundle -> broken
 (4) static Qt + CMake + macOS bundle -> works

 (2) was broken because the shared qml plugin is not located in the
 expected location (see below)
 (3) was broken because qmake needs a lot of error-prone boilerplate
 to ensure static qml plugin building and linking works.

The change fixes the example to build and run successfully in case
(2).

Tested the following scenarios on macOS with the change

  shared Qt + qmake + macOS bundle -> works
  shared Qt + CMake + macOS bundle -> works
  shared Qt + qmake + no bundle    -> works
  shared Qt + CMake + no bundle    -> works
  static Qt + qmake                -> still broken
  static Qt + CMake                -> works

To make shared qml plugins be found in a macOS bundle, we need to copy
the qmldir and plugin under the bundle's PlugIns subfolder, because
the application adds that as the expected qml import path for macOS.
This basically mimics what the qmake project does with
QMAKE_BUNDLE_DATA.

The change also cleans up the CMake projects a bit so they don't link
PUBLIC-ly against dependencies, install the plugin under a more
sensible location and don't needlessly setup package finding and other
boilerplate that's done in the parent project.

The change also cleans up the qmake projects to adjust to not pollute
the macos bundle dir with static plugin files.

Amends 9e1d2a0eb1

Pick-to: 6.2
Change-Id: I45bb699a67adf598587350a03f778291fad3f850
Reviewed-by: Craig Scott <craig.scott@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2021-08-31 14:51:25 +10:00
Craig Scott 784af37650 Fix warnings/errors from changes to paths in chapter6-plugins example
Amends 2d2750efc3b5a97a5f1cf09b4265a26fcc393499

Change-Id: Iab27efb7359cfcea9274dcbbc7ac64b647d3e71b
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2021-08-31 14:51:22 +10:00
Laszlo Agocs d5700949ff Migrate to fixed add_shaders prefix handling
Change-Id: I6c5b0680d32bc3650983c64cc4583f790774da88
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-08-30 20:56:30 +00:00
Oliver Eftevaag 9454685db8 Add qsTr() around 2 strings in imageelements example
Making some strings translatable

Change-Id: I7a088e9e9966996ee20ab8bee29cf17c060120d7
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2021-08-30 22:56:29 +02:00
Ulf Hermann 76a413bb11 Fix touchinteraction example to use QML modules
Remove the "content" subdirectories. They just add noise.

Pick-to: 6.2
Change-Id: Iae6bf7d91b6804294673be8966e30b11caae0654
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2021-08-30 20:34:57 +02:00
Ulf Hermann cb9cc7ca66 Update views example to use modules
The qmake and qmlproject files are adapted to use the "shared" module,
too.

Pick-to: 6.2
Change-Id: I5fc4895416357ba202528b155581b1b5a880a68d
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2021-08-30 20:34:49 +02:00
Ulf Hermann 7b6eea37ae Fix the qtquick/window example to use QML modules
The shared code becomes its own module. Due to the ${PROJECT_NAME} trick
it should be possible to include it multiple times, in different
examples.

Pick-to: 6.2
Change-Id: I78cc3211f67fae9a713320fae4041898e6a397ed
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
2021-08-30 20:34:43 +02:00
Oliver Eftevaag 621e583f05 Fix coding style
Pick-to: 6.2
Change-Id: Icfcdcb306dbeb750c8ebad44b431c5364ef63c44
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2021-08-30 15:01:16 +02:00
Oliver Eftevaag 9e38f4da96 ShaderEffects example: replace custom slider with qqc2
Replacing a custom made slider component with a qqc2 slider.

Task-number: QTBUG-95738
Pick-to: 6.2
Change-Id: I407307a3769a0c9821d311189ed40b0d48dab4d3
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2021-08-28 17:25:28 +02:00
Oliver Eftevaag 5ae40afa97 Shapes example: use qqc2 components
Changing the example to use qt quick controls where it makes sense

Task-number: QTBUG-95739
Pick-to: 6.2
Change-Id: Id0df227657693234de4481c2316dc6c3e0545043
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2021-08-28 17:25:03 +02:00
Ulf Hermann 9cb0b528e3 Update the accessibility example to use QML modules
Pick-to: 6.2
Change-Id: Iec3dad42dd08ac230ffde15b422ae7f68d419e81
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Maximilian Goldstein <max.goldstein@qt.io>
2021-08-27 17:09:50 +02:00
Oliver Eftevaag e771c12ae7 ImageElements example: Use QQC2 and update copyright
Updating the example to use qt quick controls 2 where it makes sense, as
well as copyright headers.

Task-number: QTBUG-95737
Pick-to: 6.2
Change-Id: Ie22ab8551926916abd0a478adc16d1d4daeb13ad
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2021-08-27 17:09:49 +02:00
Oliver Eftevaag dad9a15c9c Replace custom button component with QQC2 buttons
Now that we've moved qtquickcontrols2 into the qtdeclarative submodule.
We want our examples to simply use qqc2 controls, rather than custom
made buttons and other controls.

This example used a custom made button component, which this patch will
replace with qqc2.

It will also use qqc2 in other places where it makes sense, like replacing
a TextEdit with a qqc2 TextArea, and Text components with qqc2 Labels.

Task-number: QTBUG-95733
Pick-to: 6.2
Change-Id: Ic733cd592cd10ef2cf45058aaf08a0f6b2f5bd2c
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2021-08-27 17:09:48 +02:00
Oliver Eftevaag 8976c46f46 ExternalDragAndDrop example: Use controls from Qt Quick Controls 2
This patch changes the external drag and drop example to use qqc2
checkboxes instead of a custom made component.

It also changes the position of the checkbox in order to avoid having
the label text overlap with it.

Task-number: QTBUG-95736
Pick-to: 6.2
Change-Id: If3e798ea0ccd64921138690c7599876ec0584038
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2021-08-27 17:09:48 +02:00
Oliver Eftevaag 409019bc11 EmbeddedInWidgets example: Use QQC2 components
Replaces the TextBox custom component with a qt quick controls 2
TextField.

Task-number: QTBUG-95735
Pick-to: 6.2
Change-Id: Ic1fb47c8e57cd2d805d4a9941df9bc02a5e7bc17
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2021-08-27 17:09:47 +02:00
Laszlo Agocs 266b93c9f8 Use add_shaders with CMake in some examples
Take the most obvious candidates, to which users typically turn
when getting started with ShaderEffect or QSGMaterial:

shadereffects
scenegraph/custommaterial
scenegraph/twotextureproviders

As with the parent patch that ports and updates embeddedinwidgets and
quickwidget/qquickviewcomparison to use the proper CMake machinery, we
still need to keep the .qsb files for the sake of qmake. compile.bat and
similar scripts are however removed now. With CMake the .qsb files are
not needed and are autogenerated at build time. Once qmake support
disappears from the examples, the .qsb files can be removed as well.

Pick-to: 6.2
Change-Id: I879354eef2e2179dcd268c9ae9f1402e1eaef379
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-08-24 13:51:52 +02:00
Laszlo Agocs c7093e553c Port leftover effects in some of the examples
For qmake we have no choice but to ship the .qsb files, whereas with
CMake we now rely on qt6_add_shaders.

Pick-to: 6.2
Change-Id: I9bb64a3ffd01cda84fca5a0f7def270975bf71aa
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-08-24 13:51:52 +02:00
Craig Scott a86fd709dd Update quick examples to new QML CMake API
This is a pre-requisite to being able to make
qt6_qml_type_registration() an internal rather than public command.
Not all examples have been updated, only those that were using the
qt6_qml_type_registration() command.

Task-number: QTBUG-95093
Pick-to: 6.2
Change-Id: I3f1814a29af608461daa90477eca0aa2304eb9d1
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-08-24 16:08:21 +10:00
Craig Scott 9e1d2a0eb1 Update qml examples for improved target path handling
Some examples were still using the old "add as ordinary resources"
approach for QML modules, others needed adjustment to the subdirectory
structure to better reflect the URI structure of the QML modules
involved.

Task-number: QTBUG-95144
Pick-to: 6.2
Change-Id: Ie3399410cf6df491eb1e7b4a589ca26c577d82a0
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-08-24 16:08:21 +10:00
Shawn Rutledge ca89437d00 Use qEnvironmentVariableIntValue() instead of qgetenv().toInt()
The docs tell us that it's faster.

Pick-to: 6.2
Change-Id: Ib828ed9a10bbb617670a61e7525cbbe25704815d
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2021-08-17 16:14:53 +02:00
Joerg Bornemann b4ab58d791 Raise cmake_minimum_required to VERSION 3.16 in examples
Pick-to: 6.2
Task-number: QTBUG-95636
Change-Id: I9f76b787533dad1c469fbb8c69df6c27b20a9aa3
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-08-17 13:48:14 +02:00
Luca Di Sera 6901fb779a Remove deprecation warning from QtQuickControls2 gallery example
In the "Delegates" page of the gallery example the user is allowed to
swipe over the available `SwipeDelegateComponent`s to show a 'remove'
button, which allows the removal of that item from the containing list
when pressed.

When this happens, an animation is played.
In the code, the animation was attached to the signal handler,
as follows:

```
ListView.onRemove: SequentialAnimation {
...
}
```

This form of attachment has been deprecated as of
Qt 6.1.0, in commit 6eb35df60e, in favor of creating a stand-alone
object and calling the relevant slot from the signal handler,
generating a series of warning when the attachment happens
during the creation of the page.

This patch updates the connection to the new format, avoiding
the generation of the warnings.

Pick-to: 6.2 6.1
Fixes: QTBUG-95562
Change-Id: Ib67cb9b8703dad427c49475c00791fdd5d1b0669
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2021-08-05 09:44:41 +00:00
Mitch Curtis 16436239cd Merge qtquickcontrols2 into qtdeclarative
Task-number: QTBUG-95173
Change-Id: I2cf31e30127e8cc2f10304cabf4ff7f5050633b8
2021-07-28 11:21:25 +02:00
Craig Scott 0c99c17761 CMake: Change the default of OUTPUT_DIRECTORY for qt6_add_qml_module()
The new default is now controlled via a new QT_QML_OUTPUT_DIRECTORY
variable. If that isn't set, the fallback assumes the source directory
structure follows the URI structure and uses
${CMAKE_CURRENT_BINARY_DIR} instead. This pattern means more projects
will have working import paths for qmllint and possibly other tools
out of the box. There should also be fewer cases where the
OUTPUT_DIRECTORY option needs to be used in calls to
qt6_add_qml_module(). The QT_QML_OUTPUT_DIRECTORY variable facilitates
the scenario where QML modules might be distributed across different
parts of the source directory hierarchy, but once collected under a
common base point defined by QT_QML_OUTPUT_DIRECTORY, they form a
coherent set of QML modules whose subdirectory structure below that
base point follows their TARGET_PATH.

Fixes: QTBUG-94164
Fixes: QTBUG-95081
Pick-to: 6.2
Change-Id: I82864c361a2b34f7f1484cdbda0d9b64b34b9950
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2021-07-20 16:33:48 +10:00
Ulf Hermann fff8d6120a Use "= default" rather than empty bodies for ctors and dtors
Change-Id: Idef0ebaa0074e1e4b6b74d20bd6c70cb22a04f93
Reviewed-by: Maximilian Goldstein <max.goldstein@qt.io>
2021-07-01 08:34:58 +02:00
Ulf Hermann 91e7009aec Use "auto" as type when initializing using "new"
The type is immediately visible from the right hand side then.

Change-Id: Ifc1a15e3eea9b5a91ff8647f759d207a0ee221b8
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2021-07-01 08:34:54 +02:00
Ulf Hermann 83859221c1 Initialize members in declaration rather than ctor
Change-Id: I084a6865ae37c6612fbcfd44a233234f05e38814
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
2021-06-30 14:17:12 +02:00
Ulf Hermann 213b890899 Add missing "override" keywords
Our examples should follow best practices.

Change-Id: Ice90a818ae46e921b421e8d297806d8f7200294b
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
2021-06-30 14:17:01 +02:00
Ulf Hermann b200fbe213 Do not call QGuiApplication::exec() on an instance
It's a static method. It should be called statically.

Change-Id: I15fc8948988b0a2c0a30f8699949e06c66d92fdf
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
2021-06-30 14:16:55 +02:00
Ulf Hermann 1629fa0c6c Use nullptr rather than 0 for null pointers
Change-Id: I2921298ad2e04001bdee8824c56f01c203efb7d6
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2021-06-30 14:16:49 +02:00
Eskil Abrahamsen Blomfeldt 07d646d1b0 Update imageelements example to Qt 6 url syntax
The imageelements examples depended on URLs being resolved
relative to the file where it was declared, but in Qt 6
this was changed. Since the source is actually resolved
inside MyBorderImage, which is in content/, we would end
up trying to resolve content/content/foo.png.

To avoid having code depend on the location of types it is
using, URLs have to be packed in Qt.resolvedUrl() in Qt 6.

Change-Id: I16e203e92b3b4c7c573dcdb85dcd556f2103ab80
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2021-06-17 14:20:01 +02:00
Laszlo Agocs d3412cddab rendercontrol examples: Exercise key event generation as well
Task-number: QTBUG-93489
Change-Id: Ife9db7b066add1f41de964d4c41309568f954320
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2021-06-15 11:12:21 +02:00
Craig Scott 1c4ba17015 Refactor and update qml CMake API
The existing CMake API for qml modules had a number of
shortcomings. Refactor it to achieve the following:

- Clearly separate public and internal aspects.
- Re-use code from qtbase for adding plugins and module
  targets rather than reimplementing close variations.
- Provide more robust and complete support for qmllint,
  qmlcachegen and automatic generation of qmldir files.
- Reduce the steps needed for more common scenarios.
- Encourage the use of separate backing library and plugin
  targets.
- Automatically generate the plugin class .cpp file where
  possible.
- Specify .qml files directly through qml-specific API
  elements rather than assuming they can be extracted
  out of a set of resources.

[ChangeLog][QtQml] The qml CMake API has changed from 6.1
and is now out of Technical Preview status. The most
notable change is that .qml files should no longer be
specified as resources, there is dedicated handling for
them in the qt6_add_qml_module(). A related change is
that the qt6_target_qml_files() command has been replaced
by qt6_target_qml_sources(). More complete integration
with qmlcachegen, qmllint and qmldir generation is also
part of the CMake API.

Fixes: QTBUG-91621
Task-number: QTBUG-82598
Task-number: QTBUG-88763
Task-number: QTBUG-89274
Task-number: QTBUG-91444
Change-Id: I25aae1b0e89890394dfe2ba2824008164b2ca8d9
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2021-06-04 16:54:52 +10:00
Craig Scott 2422dd5a7a Switch examples to build as isolated sub-builds
Task-number: QTBUG-90820
Change-Id: Id9157526898ba72cb64ee8256639b37357f7bacf
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
2021-05-27 21:08:14 +10:00
Joerg Bornemann 9ed32b292f Use fixed qt_add_resource BASE argument
Pick-to: 6.1
Task-number: QTBUG-86726
Change-Id: Ie638443a76623df0ec20fbcd5485af59866deee6
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-05-22 21:12:26 +02:00
Joerg Bornemann 1917a868d9 Use fixed qt_add_resource BASE argument
Pick-to: 6.1
Task-number: QTBUG-86726
Change-Id: If6e1033642d98ccd40daeb57a453c0e5bc2985da
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2021-05-21 00:21:26 +02:00
Laszlo Agocs aab39f5d5d Enable rendercontrol_d3d11 example for MinGW
Pick-to: 6.1
Fixes: QTBUG-92839
Change-Id: Id17417b7ae010566b7f78ea1a6b2cc8fe6abc5e3
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2021-05-19 14:41:08 +02:00
Maximilian Goldstein 3168111285 examples/qml/locale: Use inline component as a delegate
Modernize the code by using an inline component as a delegate in this example file instead of declaring the delegate inline.

Change-Id: I52c75f81c42362f858f63bdbbaf432c0966309fe
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
2021-05-19 11:46:37 +02:00
Maximilian Goldstein f7856bc961 examples/quick: Explicitly cast Qt.application to (Quick) Application
Change-Id: Ib9ec9eb0e9f47d8ce758a3c93fee2d1a5abb73ac
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2021-05-03 13:10:51 +02:00
Maximilian Goldstein 63b418eb54 examples: Use template literals for multiline strings
Change-Id: I660a74730edf60d0b7760162b441e3e14749e930
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2021-05-03 10:17:18 +02:00
Maximilian Goldstein 30f9affd16 examples/quick/text/styledtext-layout.qml: Fix warnings
Change-Id: I7c0133d08f306dfb813d02e40f1987e278dd3f4d
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2021-04-30 11:30:06 +02:00
Maximilian Goldstein d21561ca2c examples: samegame4/BoomBlock.qml: Do not use unqualified access
Change-Id: I6e7d6b82605271478bfba9ff614f5748b58fffb7
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2021-04-30 10:57:33 +02:00
Maximilian Goldstein 9a7b31b736 examples/quick/views: Fix a few warnings
Change-Id: Iac5df82ff708e37a0cb985e0b83878e7f9b107e1
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2021-04-30 10:55:58 +02:00
Mitch Curtis 23cad8990c Fix gallery example defaulting to Basic instead of the platform default
The example used to default to the Default style, and when that was
renamed to Basic and the default style behavior changed, we forgot to
adapt the style property in the QML Settings instance.

We should now not set any value as a default, and instead ensure that
the style is set on the QSettings in C++.

Pick-to: 6.1 6.0
Change-Id: Ia8654f28ae6adc9171d667c2c5c3603a15251cab
Fixes: QTBUG-91989
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2021-03-24 09:20:59 +01:00
Xiao YaoBing 073f3d23b2 make isRightAligned() const and setNoiseSource() const reference
Guessing the const specifier was accidentally forgotten

Change-Id: I88aaacbd9f8562c8a0b800013bb596c166fae6d7
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2021-03-17 10:21:02 +08:00
Oliver Eftevaag 1d3cdac6e4 Update canvas example to use QtQuickControls2
The QtQuick examples should ideally have a more native look and feel.
Making them use controls from QtQuickControl will cause them to adapt to
the desktop style.

This patch replaces the previous Sliders from the 'shared' directory,
with Sliders from QtQuickControls2

Task-number: QTBUG-90880
Change-Id: I90521abf7059950521bc3d1a54994d2cca07259d
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2021-03-10 17:53:22 +01:00
Oliver Eftevaag 454da9f721 Update window example to use QtQuickControls2
Replaces the use of custom made components from the shared directory, with QtQuickControls2 components.

Fixes: QTBUG-90883
Change-Id: I6e659188aa75bfacf8181689f30580783bf280a2
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2021-02-23 13:49:51 +01:00
Oliver Eftevaag b2f89bbbb1 Make localstorage example independent of the 'shared' directory
Removed dependency to the components in the 'shared' directory from the
project files. The CMakeLists.txt is generated from the qmake project
file using the pro2cmake.py utility.

Task-number: QTBUG-90884
Change-Id: I4f52a065d02bdfc747a2bca89ad0c1707a7ef9ec
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2021-02-22 17:10:15 +01:00
Laszlo Agocs 21d9cd844e Fix custommaterial example with OpenGL
The member names in the "uniform block" (which is in practice
mapped to a struct uniform with GLSL) must match between the
vertex and fragment shaders, even if the member is not used in
one of the shaders. This is because OpenGL/GLSL's interface
matching rules, which would cause the shader program fail to
link due to a mismatch in the structs in the two shaders.

Pick-to: 6.1 6.0
Change-Id: I9a928b4b20fdff14530c16a93a52967ce6c328a3
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2021-02-19 10:17:08 +01:00
Oliver Eftevaag 7b263f7bf5 Improve visuals and usability
Usability has been improved when entering new rows into the database.
The user is now only able to write in the input form when editing
an exiting entry or creating a new entry. The warning message associated
with entering invalid input will now disappear after a few seconds.
The ListView delegate is now slightly larger, and looks slightly better.

Task-number: QTBUG-90884
Change-Id: Idf7ca9c0bb8b86ac06fed80e945800603f7b03d9
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2021-02-16 14:31:17 +01:00
Oliver Eftevaag 860928d5c8 Update localstore example to use QtQuickControls2
Removing MyButton.qml and replacing it with QtQuickControls2.

Task-number: QTBUG-90884
Change-Id: Ie1b22e817dedfd71593b074561bdfe2e7dc36008
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2021-02-16 12:32:52 +01:00
Ulf Hermann 4cc91a6a0e Use functions as signal handlers when accessing parameters
Injected signal handlers are bad practice because they aren't declared.

Pick-to: 6.1
Task-number: QTBUG-89943
Change-Id: I3a691f68342a199bd63034637aa7ed438e3a037b
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2021-02-12 10:30:20 +00:00
Nico Vertriest b67de9c660 Doc: Fix dead link Qt logo in example
Task-number: QTBUG-80412
Change-Id: Ib97033ec3729a4af2e7404a8ddbb860e574c928d
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-12-16 07:56:19 +01:00
Mitch Curtis 885abf6147 Fix build of some examples on Windows
ba2da7d745 fixed the build of some
examples when cross-compiling, but for whatever reason it breaks
regular builds on Windows.

This patch makes that fix more specific in the environments it affects.

Fixes: QTBUG-89290
Pick-to: 6.0
Change-Id: I5356a855e3b6f9c27ba05beb9dc11dc32920c6c5
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-12-10 10:54:58 +00:00
Alexandru Croitor c1c4a874e3 CMake: Regenerate projects using pro2cmake one last time
And fix up some incorrect qmake project files

Pick-to: 6.0
Change-Id: Ia6d27ac68195635021fe7c4a5f06386a60f3f323
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-12-10 11:11:58 +01:00
Fabian Kosmale 6eb35df60e QML engine: Deprecate DefaultMethod
Assigning objects to signal handlers can be convenient, as seen in the
examples which use it together with ListView.onRemove.
However, that convenience makes it hard to reason about what actually
happens. Moreover, the only user of that functionality are the Animation
classes, and the usage of DefaultMethod is not documented anywhere.

[ChangeLog][QtQml] Assigning an object to a signal handler is deprecated.
Instead, create the object, give it an id, and call the desired slot
from the signal handler. For instance, instead of of
ListView.onRemove: SequentialAnimation {...}
use
SequentialAnimation {id: removeAnimation; ...}
ListView.onRemove: removeAnimation.start()
A warning will be printed whenever an assignment of an object to a
signal handler occurs. The warning can be controlled via the
qt.qml.defaultmethod logging category.

Change-Id: I001ddf4d7933871977f84a5e012d020fb043cc64
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-12-03 21:12:42 +01:00
Joerg Bornemann ba2da7d745 CMake: Make QT_BUILD_EXAMPLES build work with boot2qt
Work around QTBUG-86533 by adding explicit dependencies to
QuickTemplates2.

Change-Id: I293e6db652cbd6c7a699f778c0d45c6c1fd9bdc9
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-12-03 17:52:45 +01:00
Andreas Buhr b5b36db63a Fix documentation links to High DPI documentation
The documentation on High DPI was recently rewritten, renaming
several sections. This patch fixes the links which were broken
by this change.

Task-number: QTBUG-88533
Pick-to: 6.0
Change-Id: Iae9f38d722a267ba5b21db6f2ef7394a6c675d4f
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-12-01 15:48:55 +01:00
Mitch Curtis 71249db0cb gallery: don't store QQuickStyle::name() in settings on startup
It's no longer empty if not specified, so just skip that step
altogether. Add the desktop styles to the list of selectable styles,
but only on the correct platforms. Only set the style at startup if it
wasn't specified via QT_QUICK_CONTROLS_STYLE. I tried to detect if a
-style application argument was passed, but it doesn't show up in the
list of arguments.

Change-Id: I7c216372580a012693b7a01d138d79c8d46afe66
Fixes: QTBUG-88955
Pick-to: 6.0 6.0.0
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2020-11-30 15:12:47 +01:00
Friedemann Kleint 203acb1955 Fix building the d3d11underqml example with MinGW
Fix format mismatch
qtdeclarative/examples/quick/scenegraph/d3d11underqml/d3d11squircle.cpp:369:16: error: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'HRESULT' {aka 'long int'} [-Werror=format=]
          qFatal("Failed to create buffer: 0x%x", hr);
by casting to uint (as is done in an existing qWarning()).

Pick-to: 6.0
Change-Id: I9bed3066936af8a1831b695a76d40989a834fde9
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-11-26 20:29:37 +01:00
Venugopal Shivashankar 4fac3dd5b5 Doc: Drop the \excludefromcreator meta tag
The example does not depend on the
Qt Graphical Effects module now.

Pick-to: 6.0 6.0.0
Change-Id: Ia69bc16738f5f52aaea828409ef73bf0c68e371e
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2020-11-24 09:51:01 +00:00
Maximilian Goldstein 56f428c360 qmlfunctions.qdoc: Add clarification to QML_FOREIGN
Fixes: QTBUG-87150
Pick-to: 5.15 6.0
Change-Id: If99a06a07892bdfef7b6b1e8fa737480750992fe
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-11-23 14:29:02 +01:00
Mitch Curtis e783bb87b8 Remove glow effects from automotive example
For now there is no way to do this without writing them ourselves.
Since the effect was fairly subtle, we simply live without it for now.

Task-number: QTBUG-88202
Change-Id: Ic2556258461f657eddef3a597d928a7a0a7604c4
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-11-19 14:55:29 +01:00
Venugopal Shivashankar d220b4a8d0 Example: Drop "2" against "Qt Quick Controls" text
This should ensure that the examples give the same
message as the documentation. In addition,
dropped a phrase about Qt Quick Controls claiming
that it is designed for mobile and embedded. The
latest version of controls covers the entire spectrum.

Change-Id: Ia856fa47a6e6fc35f80bedc549378a00c7fbbc2a
Pick-to: 5.15
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-11-17 09:30:18 +00:00
Fabian Kosmale 20641edb37 Make text example work in static CMake builds
Task-number: QTBUG-87702
Task-number: QTBUG-86947
Change-Id: I9dd1b6ca633be60977109acf6b00123d4492b726
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-11 23:40:13 +01:00
Ulf Hermann d7008c79d4 QQmlListProperty: Use qsizetype rather than int for sizes
[ChangeLog][QtQml] The QQmlListProperty callback functions use qsizetype
now as type for the size of a list. This is in line with the containers
that you might use to back the list.

Fixes: QTBUG-88269
Change-Id: Ia38403cb32f241e6c70e1a580dbeff1d6d694331
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-11-09 18:09:30 +01:00
Mitch Curtis d430281112 Doc: use correct casing for Material style name
Change-Id: Ia2d10b9fd27c8e83bfd8ed8ae021391ba1df50f1
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-11-09 12:58:42 +01:00
Venugopal Shivashankar e3a31e9d1e Doc: Fix qdoc warnings
Mostly broken links to types and
properties that are either dropped or
renamed.

Task-number: QTBUG-88141
Fixes: QTBUG-88141
Change-Id: I44789cdd1b8560a967b0b3868fd637deef488d88
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2020-11-06 15:06:25 +01:00
Venugopal Shivashankar 749debe64f Doc: Drop the automotive example from Qt Creator welcome screen
The example depends on QtGraphicalEffects which is
not part of the 6.0 release.

Task-number: QTBUG-88202
Change-Id: If266a0965bc3ca288d2ef45e130232cb1571462b
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2020-11-06 12:23:28 +00:00
Topi Reinio 0b12055548 Doc: Fix documentation warnings for Qt Quick
- Remove links to modules and examples that are not part of Qt 6.
- Remove links to entities marked as \internal
- Add missing enum value and QML property docs where it's trivial
  to do so.

Task-number: QTBUG-88156
Change-Id: I10a1c7bcc5fe0e2354ea69eaf24930362edb7415
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-11-05 09:00:48 +01:00
Kaj Grönholm 4fd12eef18 Fix CustomAffector example
Don't use particle.r which doesn't exist since the CustomParticle
removal. Make example a bit simpler without this.

Task-number: QTBUG-88173
Change-Id: Id994a9a58796e8194fdccd63c6439d4c19681a45
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-11-05 10:00:37 +02:00
Volker Hilsheimer cde1a8a10b Get rid of all instance usage of QFontDatabase
All QFontDatabase APIs are static, use them accordingly.

Task-number: QTBUG-88114
Change-Id: Iae40e1354eaa6a6098a9fdbce9e237a9f498cc7d
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2020-11-03 16:55:32 +01:00
Volker Hilsheimer ed92e44b61 Add includes to fix build errors in tests and examples
Change-Id: I47dcf16b1d207317985e303c626a121aa307704c
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-10-31 16:19:20 +01:00
Shawn Rutledge 1469bac17c Add #include <QPainter> in textballoon example
It is not building in namespaced builds without this.
Others also needed this include, such as
qml/tutorials/extending-qml/chapter2-methods/piechart.cpp

Change-Id: Ifbb0557655d247b146ca2eddb07ea6813d9ffacb
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-10-31 09:45:31 +01:00
Mitch Curtis 8622862b00 Fix flatstyle example
Styles must now be proper QML modules; i.e. have a qmldir and be
available in the import path.

Fixes: QTBUG-87848
Change-Id: I07de491be31a24f2b07f68f389600450dc89561c
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-10-30 12:04:22 +01:00
Alexandru Croitor 20d5e2d7ef CMake: Regenerate examples to set the WIN32_EXECUTABLE property
As well as the MACOSX_BUNDLE properties as necessary.

Task-number: QTBUG-87664
Task-number: QTBUG-86827
Change-Id: I46769fb543acb2cbeba122470b5e44ad478fbe4e
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-10-26 23:38:39 +01:00
Alexandru Croitor edfb8943fc CMake: Regenerate examples to set the WIN32_EXECUTABLE property
As well as the MACOSX_BUNDLE properties as necessary.

Task-number: QTBUG-87664
Change-Id: I1113701f04a16b05b03fbb1a49f131c84659cdcb
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-10-26 21:20:04 +01:00
Laszlo Agocs fa9808bad0 Fix up shadereffect example docs
The screenshot has been out of date for years now. Update it
as well.

Change-Id: I2b9ae3b0c24b0de7f0cd8a2284d67023237f0944
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
2020-10-23 07:51:59 +00:00
Alexandru Croitor 903252b240 CMake: Regenerate examples to use qt_add_executable
Task-number: QTBUG-87661
Change-Id: Ie5bba408000211b24694aa0143bdf79c4a298f42
Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
2020-10-20 09:32:34 +02:00
Alexandru Croitor a4445cf2f7 CMake: Regenerate examples to use qt_add_executable
Task-number: QTBUG-87661
Change-Id: I0d26db40fdb7bd35c92c8fd970b60ec580acc0e0
Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
2020-10-20 09:13:34 +02:00
Mårten Nordheim 3a9f84fb37 Update QStringConverter usage
Following fa8d021fa6fcb040fb702b6ffd2deee52a3b748a

Change-Id: Ifa08b5e1bceecb8657ce528eb315c19fa34a1e1f
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-10-09 11:44:18 +02:00
Tor Arne Vestbø 43dbc7cbd1 Adapt to platform API rename
Change-Id: I1f2171e18ec3df71f7eaec1be0e0e0d1442a3860
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-10-09 09:03:20 +02:00
Ulf Hermann e7d90fc526 Fix lineedit example
The default name created by QML_ELEMENT is the name of the local type,
not the one of the foreign type.

Pick-to: 5.15
Task-number: QTBUG-87150
Change-Id: I2b5dfcea3e835d4e69d5fa4df179333a37ee1d6e
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-10-05 12:56:37 +00:00
Mitch Curtis 9219e86aa5 Rename "Default" style to "Basic"
[ChangeLog][Styles] The Default style was renamed to Basic to account
for the introduction of the platform styles (macOS, Windows), which
will be used by default (where possible) when no style is specified.

Fixes: QTBUG-85984
Task-number: QTBUG-68814
Task-number: QTBUG-86403
Change-Id: I22b3199c8662e4ee5d55a1be1a51c9856ac62376
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2020-09-24 13:48:49 +02:00
Volker Hilsheimer 38b9c4f327 Fix additional warnings from usage of deprecated APIs
Replace more QLibaryInfo::location with QLibraryInfo::path

Replace old event accessors APIs, including relevant comments.

Change-Id: Ie205fc93b6e1c0dfb3dca9100fbde417ab68fc9f
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-09-16 16:24:21 +02:00
Volker Hilsheimer a15840a8df Fix additional warnings from usage of deprecated APIs
Replace QLibaryInfo::location with QLibraryInfo::path, and remove usage of
Qt::AA_EnableHighDpiScaling, which doesn't have any effect anymore.

Change-Id: I347e8a83e0f4c2b4405f2512e569ad3234f05a98
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-09-16 12:44:59 +02:00
Volker Hilsheimer 153c0ee3c4 Fix more compiler warnings from deprecated application attributes
Also cleanup documentation, with the exception of the "High-DPI
Support in Qt Quick Controls" page, which needs to be either
removed or rewritten after some fact checking.

Change-Id: I3cdf1f8554f8f26627a9a5f17c2ee0038c933468
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2020-09-16 10:32:15 +02:00
Volker Hilsheimer 0e0f7c0b7b Fix compile warning from deprecated application attributes
AA_DisableHighDpiScaling and AA_UseHighDpiPixmaps have been deprecated.

As of 90358f6042d1fe2db849e17e1b0c875fb0560b20
and 2dc46c09026362cc267b1183faf09fb29479ef93 in qtbase, respectively,
these settings are deprecated and have no effect.

Change-Id: I1eb1f77a64893dd077bd08216d26633d43e1e0e3
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-09-15 17:45:04 +02:00
Laszlo Agocs a99fc26faa shadereffect example: remove unused legacy shader code
No point in exercising the file selector magic when there is only one
possible path in Qt 6.

Change-Id: I3b49b19d57a89855063e983ab0add13335840fb9
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2020-09-13 19:15:12 +02:00
Ulf Hermann b030b4a1f2 examples: include QQuickWindow in squircle headers
This is required because QQuickWindow is passed as a signal parameter.

Change-Id: Ied10beded7253558d080af4806d1b95880bf2d98
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-09-13 08:15:15 +02:00
Mitch Curtis bb33370005 Fix examples' usages of styles
After the type registration changes, importing a style explicitly
will cause that style's QML types to be used, so applications
should put style-specific code into file-selected directories if
they need to support multiple styles.

[ChangeLog][Important Behavior Changes] Due to the recent type
registration changes, importing a style explicitly (e.g.
"import QtQuick.Controls.Material") now registers that style's
QML types in addition to making its API (attached, singleton, etc.)
available. For this reason, it is now advised to have style-specific
code in a separate QML file and use file selectors if your application
supports more than one style. If your style only supports one style,
importing that style explicitly will work as expected.
For example, if you use Material.foreground in your QML code and your
application supports more than one style, you should refactor the code
that uses the binding into its own file; e.g.
+Material/MyComponent.qml.

Fixes: QTBUG-86263
Change-Id: I38e40ff4f20f61218550ad73945dafb912193466
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-09-10 12:31:45 +02:00
Laszlo Agocs df40607e8a Make twotextureproviders example functional again
Change-Id: I6a317fc8628b902e535a31daf4a3886fc87d08bc
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2020-09-07 12:38:25 +02:00
Laszlo Agocs 6cb48cb1da Regenerate graph example shaders
Change-Id: Id4fe4d0e177180fadd10f34b9ebad17c71e40314
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2020-09-07 12:38:23 +02:00
Laszlo Agocs 23ad0953ab Add CMake project file for custommaterial example
The name conflicts with a Quick3D example so try to use the same
approach as it was done for customgeometry.

Task-number: QTBUG-86205
Change-Id: Ie01cd6c0118d512b2f45d4c6e782ec6639e052c6
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-09-07 11:48:26 +02:00
Laszlo Agocs 6f2f198aff Remove old GLSL code from fboitem example
There is no OpenGL path anymore in Qt 6, no point using file selectors.

Change-Id: I4b7afbbb193dfe1a6e912a909babab0aeb8dcdda
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2020-09-07 09:43:08 +02:00
Mitch Curtis f872cdde21 Fix qdoc errors
Change-Id: I83f21bd6b780daa545c57d050d0f7562e8c0a4ff
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
2020-09-03 15:12:43 +02:00
Tor Arne Vestbø d0eb261836 Remove use of deprecated High-DPI application attributes
Change-Id: Ibfb50fdcbb51ba93d6e5d11f9e8ce0e7b3bfde79
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-09-02 17:17:33 +02:00
Edward Welbourne 572882fd67 Example: Pass QDate, QTime by value, not by const reference
They're value types, packaging qint64 and int, repsectively.

Change-Id: Icf18794466cd140e1384d6dd0de736fbb2c05a48
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-09-01 16:57:01 +02:00
Sze Howe Koh fd105380eb Doc: Capitalize "GUI" correctly
Pick-to: 5.15
Change-Id: I2230e2dcb7bc2497b5dbe71a22c21d84176b5e57
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
2020-08-30 09:59:51 +08:00
Sze Howe Koh 024ec9c564 Doc: Fix minor typos
Pick-to: 5.15
Change-Id: I4c51c40697e410d56b6a2d2446ed9f8ae218576d
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
2020-08-30 09:59:49 +08:00
Mitch Curtis 501bc44bb0 Use qmlRegisterModuleImport() to register styles
This patch completes the cumulative work done in previous patches.

- Uses qmlRegisterModuleImport() to register styles. This has some
  added requirements:
  - Each style must now be a QML module -- that is, it must have a
    qmldir file.
  - As a result of the above, the module must be available within the
    QML import path in order to be found.
  - The various forms of accepted style names have been reduced down to
    one ("Material", "MyStyle", etc). See below for an explanation of
    why.
  - The following API in QQuickStyle is removed:
    addStylePath(), availableStyles(), path(), stylePathList(). These
    no longer make sense now that we reuse the existing QML import
    system.
- Adds the tst_qquickstyleselector auto test back as "styleimports".

qmlRegisterModuleImport() vs resolvedUrl()

    Previously we would use QQuickStyleSelector to select individual
    QML files based on which style was set. We'd do this once when
    QtQuick.Controls was first imported.

    With Qt 6, and the requirement that each style be a proper QML
    module, qmlRegisterModuleImport() was introduced. This allows us
    to "link" one import with another. For an example of what this
    looks like in practice, suppose the style was set to "MyStyle",
    and the fallback to "Material". The "QtQuick.Controls" import
    will be linked to "MyStyle", "MyStyle" to
    "QtQuick.Controls.Material", and as a final fallback (for controls
    like Action which only the Default style implements),
    "QtQuick.Controls.Material" to "QtQuick.Controls.Default".
    This is the same behavior as in Qt 5 (see qquickstyleselector.cpp):

    // 1) requested style (e.g. "MyStyle", included in d->selectors)
    // 2) fallback style (e.g. "Material", included in d->selectors)
    // 3) default style (empty selector, not in d->selectors)

    This is a necessary step to enable compilation of QML to C++.

Reducing the set of accepted style names

    The problem

    In QtQuickControls2Plugin() we need to call
    QQuickStylePrivate::init(baseUrl()) in order to detect if the style
    is a custom style in QQuickStyleSpec::resolve() (by checking if the
    style path starts with the base URL). In Qt 5, init() is called in
    QtQuickControls2Plugin::registerTypes(), but in Qt 6 that's too
    late, because we need to call qmlRegisterModuleImport() in the
    constructor. qmlRegisterModuleImport() itself requires the style to
    have already been set in order to create the correct import URI
    ("QtQuick.Controls.X" for built-in styles, "MyCustomStyle" for
    custom styles).

    The solution

    By reducing the valid forms for style names down to one:

    ./myapp -style MyStyle

    we solve the problem of needing baseUrl() to determine if the
    style is a custom style or not, but needing to call it too early
    (since we now call qmlRegisterModuleImport() in
    QtQuickControls2Plugin(), which itself requires the style to have
    already been set). baseUrl() can't have been set before the
    constructor is finished.

    All of the various forms for _setting_ a style are still valid;
    environment variables, qtquickcontrols2.conf, etc.

[ChangeLog][Important Behavior Changes] Custom styles must now have
a qmldir that lists the files that the style implements. For example,
for a style that only implements Button:
---
module MyStyle
Button 1.0 Button.qml
---
In addition, there is now only one valid, case-sensitive form for style
names: "Material", "MyStyle", etc.
These changes are done to help enable the compilation of QML code to
C++, as well as improve tooling capabilities.

[ChangeLog][Important Behavior Changes] The following API was removed:
- QQuickStyle::addStylePath()
- QQuickStyle::availableStyles()
- QQuickStyle::path()
- QQuickStyle::stylePathList()
- QT_QUICK_CONTROLS_STYLE_PATH
This API is no longer necessary and/or able to be provided now that
styles are treated as regular QML modules.

Task-number: QTBUG-82922
Change-Id: I3b281131903c7c3c1cf0616eb7486a872dccd730
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-08-26 11:46:07 +02:00
Mitch Curtis d451cab0c8 Remove all version numbers from QML imports
As of Qt 6, the latest version will be used by default. This saves us a
lot of effort in terms of version bumps.

Task-number: QTBUG-82922
Change-Id: I74eba8185ec3ccc75bc293d4b2ea87d59e2d9928
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-08-26 11:46:00 +02:00
Alexandru Croitor a09e4c1aa9 CMake: Rename example conflicting with qtquick3d
Fixes: QTBUG-86205
Change-Id: I38992501abb86a4328527283ad8924ec886ea8c8
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-08-25 15:40:05 +02:00
Shawn Rutledge 0672882cab Support Markdown in the TextEditor example, including local paths
The example still loads an HTML file from resources by default, but now
it's possible to give either a relative or absolute file path on the
command line to load an html, markdown or plain text file. Alternatively
you can use the file dialog to load any of these types. We assume that
any resources (such as images) with relative paths are to be loaded from
the directory where the source text file is.

Pick-to: 5.15
Change-Id: I37bc2d6aa2306016453770dc2fd66efa41a16618
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2020-08-10 16:20:06 +02:00
Laszlo Agocs 28005c0c03 Switch to MTLTexture protocol in QSGTexture native access
Now only available from ObjC code.

Change-Id: I88df6c8839fc660ffd2b8e88a789ca73a9d4accd
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-08-04 14:29:30 +02:00
Laszlo Agocs fb96109bbc Add type safe native texture accessors
Following the pattern from QtGui.

Task-number: QTBUG-85239
Change-Id: I07b4456028d0f45223ad10e55ce65f423bab6a9b
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-08-03 16:32:30 +02:00
Edward Welbourne 3debb37250 Replace Qt's MidButton with MiddleButton
The latter has been the preferred name since Qt 4.7.0.
Added a comment on where the old name is exposed to QML that it's only
for backwards compatibility.

Pick-to: 5.15
Change-Id: I2c5088d597dd7327cc5899d06afb180d0ec2893e
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-07-22 11:16:08 +02:00
Laszlo Agocs d152bc5326 shadereffect example: change to relative file refs
Like with Image, this should work with ShaderEffect as well, and is the
better default approach to promote to users.

Change-Id: I9b8427297687db189045886fbaf17d2b4a517aba
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2020-06-30 12:43:15 +02:00
Laszlo Agocs ccb9eb0cc1 Follow QQuickGraphicsDevice changes in QQuickRenderTarget
They are not strictly related of course, but the API pattern should be
kept. We can also move away from the QSGTexture dependency which is good
since that was never directly related.

Change-Id: I9aedff5918443bda3d6e3ee1ea389071222d1ad7
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2020-06-26 21:08:06 +02:00
Jarek Kobus dd71c43b97 Use QList instead of QVector
Task-number: QTBUG-84469
Change-Id: I4c3353c00a566023503fbc178ba8454391dc334c
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-06-25 07:54:07 +02:00
Paul Olav Tvete 2be6c85b80 New custom material example
Fixes: QTBUG-78577
Change-Id: I280ffeda4bba1a9c170feb1ffa4b6c95eb0e6d28
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-06-24 19:48:45 +02:00
Laszlo Agocs 4e266103ad Rename setSceneGraphBackend to setGraphicsApi
...and fix up the docs.

The string-based setSceneGraphBackend() stays of course (the docs have
been enhanced, however). The GraphicsApi enum-based overload is now
renamed to setGraphicsApi().

Using the same name for both functions is a historical artifact, reflecting
the evolution (5.0 - 5.8 - 5.14). In 6.0 we can give it a more appropriate
name, since it does not have much to do with "backends" from the user's
perspective.

Change-Id: Id75dbf81f50a148797e5b5de9be4000153737473
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2020-06-22 16:10:52 +02:00
Laszlo Agocs a86febf876 Fix GL_ constant usage in examples
Change-Id: Iecfa47845edb78928b388d150a3229f8c7a93d5d
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2020-06-17 17:42:02 +02:00
Karsten Heimrich 602bffd346 Port QtQuickControls2 from QTextCodec to QString{Converter|Decoder}
Task-number: QTBUG-75665
Change-Id: Ib66a260dc3bfc39e2e50c38db56ca72b8186a4ac
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-06-17 15:09:27 +02:00
Ulf Hermann 828cdcabf8 Remove QtQuick.Window plugin
We move all the types into QtQuick itself and retain QtQuick.Window only
as alias to QtQuick. This requires support for qmldirs that consist of
only an import statement.

[ChangeLog][QtQuick][Important Behavior Changes] The contents of the
QtQuick.Window QML module have been moved into the QtQuick module.
QtQuick.Window is merely and alias for QtQuick now. An explicit import
of QtQuick will override this alias. Therefore, if you import QtQuick
with a different version than QtQuick.Window, you will get the
QtQuick.Window types of the version given in the QtQuick import now.

Task-number: QTBUG-84639
Change-Id: Ia82afab0ac2faba70cfdaf53dc8dfe4261e1113f
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-06-15 16:56:10 +02:00
Eskil Abrahamsen Blomfeldt 90bf30376c Anisotropic antialiasing for distance field text
For perspective transforms, we need to find the sample
range in the glyph cache per pixel. We can do this by
getting the gradient of the distance field at the
specific pixel.

This will ensure proper antialiasing with any
projection, but has the limitation that when glyph contours
become thinner than a pixel, they may disappear or become
too emphasized, because the hardware-gradient - based on
neighbouring fragments - is not reliable at that scale.
So we should only default to this when we detect that the
text is child of a 3D scene.

To make this smooth, we need to know the mode of the renderer
when creating the shader. So QSGMaterial::createShader()
now takes a render mode that we can use to customize behavior
based on whether it is rendering into a 2D or 3D scene.

[ChangeLog][QtQuick] The QSGMaterial::createShader() virtual
function has been extended to take a render mode argument,
which can be used for any customizations needed in the case
where the shader will be used in combination with 3D perspective
transformations.

Fixes: QTBUG-84695
Change-Id: I5a18a4edbdfa07e8f9d506c42bb20e8eb580927d
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-06-15 10:20:21 +02:00
Laszlo Agocs 9943181dcc Move resetOpenGLState() to QQuickFbo
QQuickWindow should not have OpenGL specifics in its API in Qt 6.

However, resetOpenGLState() is used by applications commonly in
combination with QQuickFramebufferObject (not the least because the
documentation recommends it!). This is no problem in practice because
QQuickFramebufferObject remains an OpenGL-only feature. So to minimize
the breaks, move the function into QQuickFramebufferObject::Renderer so
any application that calls the function can continue to do so by just
calling it on 'this' instead.

The rendercontrol_opengl example used to call this function as well, but
unnecessarily, it will still function the same way without it.

Note that there is a chance that there are applications that call
resetOpenGLState() in other contexts, for example in slots connected to
before or afterRendering(). For these it will need to be determined if
the call is necessary at all, and if it is, should be replaced by
(re)setting the appropriate OpenGL state manually instead.

Task-number: QTBUG-84523
Change-Id: I335599f77e8a84e347a44427eb1a1bf917796ee8
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
2020-06-12 12:38:39 +02:00
Laszlo Agocs 69c7ed97c2 fboitem example: Request OpenGL explicitly
It wouldn't render otherwise.

Change-Id: I185459f2eccdffac4f7d7968e48aab4141e0908c
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
2020-06-12 12:24:10 +02:00
Shawn Rutledge 212c2bffbb Replace calls to deprecated QEvent accessor functions
Several event accessors were deprecated in
qtbase/24e52c10deedbaef833c0e2c3ee7bee03eacc4f5.

Replacements were generated by clazy using the new qevent-accessors check:
$ export CLAZY_CHECKS=qevent-accessors
$ export CLAZY_EXPORT_FIXES=1
$ ../qt6/configure -platform linux-clang -developer-build -debug
  -no-optimize-debug -opensource -confirm-license -no-pch QMAKE_CXX=clazy
$ make
$ cd ../../qt6/qtdeclarative
$ find . -name "*.clazy.yaml"
$ clang-apply-replacements .

Task-number: QTBUG-20885
Task-number: QTBUG-84775
Change-Id: I1be5819506fd5039e86b4494223acbe193e6b0c9
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-06-11 22:00:19 +02:00
Laszlo Agocs de45522283 openglunderqml example: remove unnecessary resetOpenGLState call
Also request the OpenGL RHI backend explicitly, like all the other
similar examples (d3d11underqml, and so on) do.

Calling resetOpenGLState() in this example is pointless because it
happens before returning from the custom rendering function, and the
endExternalCommands() call achieves the same internally, i.e. the rhi
will know that cached state cannot be used anymore. There are other
valid uses cases for resetOpenGLState() but this example does not have
those.

Change-Id: Ifa7861b80c29c174d02cfe37fe8ef8eed7344195
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
2020-06-11 18:13:59 +02:00
Jonas Karlsson 1ca74842e8 Remove rendernode and opengltextureinthread examples
Task-Id: QTBUG-84623
Change-Id: I786a7a8ee256d8c395dd0e828213c5d137ba20dc
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-06-10 12:51:53 +02:00
Laszlo Agocs c167fd58c2 Enable Metal-based scenegraph examples
Change-Id: Ib2734fb10feaac106bb6483a8a361c7b35af3348
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-06-10 07:18:06 +02:00
Mitch Curtis 31fbd97b0e ApplicationWindow: remove deprecated overlay API
[ChangeLog][Controls][ApplicationWindow] The deprecated overlay
properties and attached API were removed. Use the Overlay attached type
instead.

Task-number: QTBUG-84715
Change-Id: I0781ea55ea502ffe5277385e82492291724d2090
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2020-06-08 15:44:27 +02:00
Alexandru Croitor b343fb40d7 CMake: Fix duplicate "gallery" target name
This fixes top-level builds that include qtquickcontrols2 to
configure successfully.

Change-Id: Ia90669ac66c65fc20e16ecbf15507f17a19053d8
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2020-06-04 22:27:43 +02:00
Oliver Wolff 9cefaca1ea Remove winrt
Task-number: QTBUG-84434
Change-Id: If8f57f00726868a3540c877d07fca761618e4f08
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-06-04 15:51:51 +02:00
Jan Arve Sæther 3122236e7b Fix some bugs in the example that was introduced by moving over to QQC2
Most of the bugs was due to moving over to Qt Quick Controls 2, except
from the binding we had to explicitly break now. That should probably
have been done when we used Qt Quick Controls too.

Change-Id: Ic558679802ea35e727eadc570cf299f9da4a3604
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2020-06-04 08:50:28 +02:00
Laszlo Agocs b87b3d3d43 Make QSGMaterialRhiShader become QSGMaterialShader
After a symbiotic relationship in Qt 5.14 and 5.15, it is time for
QSGMaterialRhiShader to devour its older sibling and take its place.

This makes the direct OpenGL rendering path disfunctional. All
QSGMaterial Qt 6 TODOs are solved, the API is clean and straightforward
again: a QSGMaterial creates a QSGMaterialShader, no special flags and
options needed. (it's just that QSGMaterialShader now has a slightly
different API)

Task-number: QTBUG-79268
Task-number: QTBUG-82997
Change-Id: I545ca8d796c5535e81957c706e7832133be15b7d
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-06-02 15:16:46 +02:00