This depends on the plan to have the Controls MenuBar and context Menu
"go native" on platforms that support it.
Task-number: QTBUG-119988
Task-number: QTBUG-106782
Change-Id: Ib8354b44bde385717431534d0260182715d66f16
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
...and fix a couple of minor issues that remained.
Fixes: QTBUG-81022
Change-Id: I5fc1547fb09caef5a9e24d95c2ca7b8d78ee104a
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
In the Controls text editor example, DocumentHandler always sounded like
a hack, just by its name.
We don't expect to be able to handle multiple selections anytime soon;
but if we realistically expect to have multi-seat support in Qt some
day, then probably the multi-user experience should include support for
multiple text cursors and selections. So we shouldn't paint ourselves
into a corner. QQuickTextControl works with only one QTextCursor most
of the time (but it's private, thus modifiable); and TextEdit has
properties like selectionStart, selectionEnd, selectedText, etc. which
seem to assume that there is only one selection. So probably if we
needed to support multiple selections, we could add
Q_PROPERTY(QQmlListProperty<QQuickTextSelection> selections ...),
document that those legacy properties just work with the first
selection, and/or deprecate them.
So with that in mind, let's get started with a QQuickTextSelection
object. We add TextEdit.cursorSelection which holds the single selection
near the text cursor. It provides API needed for tracking and
manipulating often-used properties of selected rich text (such as
QTextCharFormat properties) so that DocumentHandler can be removed.
The example now uses TextArea.cursorSelection to manipulate the selected
text's format. It's not possible to be fully declarative with this API
though; we need to call setFont (by assigning a font), but QFont is a
value type, and is not as mergeable as QTextCharFormat is, for example.
If we used a binding rather than Action.onTriggered, it would trigger
reading the font for an entire span of selected text (which may have had
multiple fonts), setting one attribute (like bold), then applying the
font to the whole span. What we do now is almost like that; but instead
of reading the font first, we start with a default-constructed QFont,
set one attribute, and call QTextCursor::mergeCharFormat(), in the hope
that it can merge only the features of QFont that have actually been
set. Unfortunately this is not quite true either: if you toggle the
bold button, it might change the font size too, and so on; so maybe we
really need QTextCharFormat in QML (as a value type, presumably) to
implement those feature-toggling toolbar buttons correctly.
This API is in tech preview, because of such issues as described above;
because we're just scratching the surface of what might be possible;
because we should perhaps compare popular JavaScript text-editing APIs
that might be found elsewhere, in the meantime get feedback from users
during the tech preview phase, and keep iterating.
[ChangeLog][QtQuick][TextEdit] TextEdit.cursorSelection is a
TextSelection object, which provides properties to inspect and modify
the formatting of the single selection that is currently supported.
This API is in Tech Preview.
[ChangeLog][Controls][TextArea] TextArea.cursorSelection is a
TextSelection object, which provides properties to inspect and modify
the formatting of the single selection that is currently supported.
This API is in Tech Preview.
Task-number: QTBUG-36521
Task-number: QTBUG-38830
Task-number: QTBUG-81022
Change-Id: Icea99f633694aa712d0b4730b77369077288540f
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
Since QTBUG-92155 is not done, we need an easy way to load and save text
into and out of a QTextDocument in QML. This patch follows the pattern
from Image and other types: add a `source` property, a URL from which
the file is to be loaded.
When it comes to saving, the pattern is not set: so far the only file
writing that has been available from QML is ItemGrabResult.saveToFile().
Since we need to save in specific formats, it makes sense to continue
that pattern: the text document knows how to do its own serialization,
so this is not suitable for generic data file I/O, even if we did have a
QML API for that. We add invokable functions save() and saveAs() for the
usual use cases in word processors and such. The URL extension
determines the file format.
Setting QQuickTextDocument's source is not allowed if the document has
unsaved changes. The user (app author) needs to call save() or override
modified to false first.
[ChangeLog][QtQuick][TextEdit] TextEdit.textDocument now has a source
property for loading files; save() and saveAs() functions for writing;
a modified property which tracks QTextDocument::modified; and an error
signal in case any of these operations fail. Setting the source
property is allowed only if the document is in unmodified state.
This API is in Tech Preview.
[ChangeLog][Controls][TextArea] TextArea.textDocument now has a source
property for loading files; save() and saveAs() functions for writing;
a modified property which tracks QTextDocument::modified; and an error
signal in case any of these operations fail. Setting the source
property is allowed only if the document is in unmodified state.
This API is in Tech Preview.
Change-Id: I687318523c7a520e02244e47224d067da55318b5
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
Originally, the onAccepted handler was designed to
simply emit the finished signal whenever the OK button was
clicked, without any checks. This meant that the dialog would
proceed even if some fields were left blank. Now we just
check that the strings are not empty before emitting.
Fixes: QTBUG-119147
Pick-to: 6.5 6.6
Change-Id: Ie8d3a711e139ac824a45cb5c6cfd39248a7bf117
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
The texteditor is made to open text, and in this case it makes sense to
pass the Text flag to the QFile::open call in the example code.
Pick-to: 6.5 6.6
Task-number: QTBUG-118636
Change-Id: I936610945aa6e2f67b29ce6f5c559a2b942fc718
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
Build the extra QML modules without separate backend library, so that
they load correctly when deployed to embedded device. Deploy also qmldir
files.
Pick-to: 6.6 6.5
Change-Id: I583798eb7841c8fd0520cfa049eaecbadaf50109
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
Use the standard keys for zoom and quit.
Pick-to: 6.6
Change-Id: I3659a5a84bc1e46938729710af31c834b8a50ed8
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
About popup text item had property 'wrapMode' set to 'wrapAnywhere',
so I replaced it with 'wordWrap'. In addition,
I changed text to be same as in QMessageBox::aboutQt() and wrapped
it inside ScrollView.
Fixes: QTBUG-117969
Pick-to: 6.6
Change-Id: I7a138a4a6bdb592bd3dd8edbeb76042e266b7c6f
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Dennis Oberst <dennis.oberst@qt.io>
The delegate component in DelegatePage.qml uses properties from
the context where loader exists. This behavior of Loader seems to
be changed and it doesn't forward properties. Thus, property
reference through required properties doesn't work in the component
that's getting loaded, with ComponentBehavior configured as Bound.
This patch makes a workaround by moving the component within Loader
scope and access model properties through its id.
Fixes: QTBUG-117062
Pick-to: 6.6 6.5
Change-Id: Ib1f21f842f9926a426fb79f2fbb2536ed53f98d8
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Add mobile example category tags for the chosen examples.
Add for the ones that work best for both Android and iOS.
Remove from the ones that do not work for both (at least yet).
Added, as verified on Android
-scenegraph openglunderqml
-qtquickcontrols-contactlist
-qtquickcontrols-gallery
-qtquickcontrols-wearable
Removed (for now), as not verified yet on Android
-qtquickcontrols-todolist
Fixes: QTBUG-116780
Pick-to: 6.6
Change-Id: I7f22329ec93dedaa63df34bb55dd67d14ffe5c1d
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Svg is required for the filesystemexplorer example, but it might not
be available.
Pick-to: 6.6
Change-Id: I0a68c8cabc8c0809a6ed20596fd7fcc9eec5ab7e
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Make sure that libMyStyle.so, libMyStyleplugin.so, and the qmldir are
installed.
Fixes: QTBUG-114482
Pick-to: 6.5 6.6
Change-Id: I19b182f9957cc138171f0cb69eb25a42b7bf9b37
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
This updated version addresses several bugs and misbehaviors that were
identified in the previous version. I have rewritten and improved
various aspects of the application to provide a more stable and reliable
user experience.
Here are some of the key changes and enhancements in version 2:
- Fix qmllint warnings.
- Reduce the number of redundant items
- Apply the custom window decorations inside MyMenuBar
to the contentItem instead of the background to scale
properly.
- Fix additional scaling and UI misbehaviors
- Add an application icon
- Add an editor with line numbers
- Add command line options to specify an initial directory
- Since rootIndex is exposed inside TreeView since 6.6
this is an excellent opportunity to make use of it
- Crosslink the python version of this example in the docs
Pick-to: 6.6
Change-Id: Ib816a95f843b3f4b84b11db893facda0ffc6f482
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
The gallery example depends on two factor to determine its orientation.
Apart from size of the window, the orientation configuration in the
setting (introduced in the patchset
7c7e3a1fdf) would also be considered.
This patchset updates documentation for the change mentioned above.
Pick-to: 6.6 6.5
Change-Id: Iaf46c5cc49350e889121b3e57dc3f86e46609459
Reviewed-by: Juho Lääkkö <juho.laakko@qt.io>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Also, changed one of the example pages to a tutorial
page.
Task-number: QTBUG-115297
Pick-to: 6.5 6.6
Change-Id: Ife1b740523039b9287008a1c5243edfc4c1349d1
Reviewed-by: Kai Köhne <kai.koehne@qt.io>
- Ensure icons are legible when a dark theme is in use in the
underlying OS. The app's own dark mode setting was unaffected by this.
- Remove trailing space in temperature label.
Fixes: QTBUG-114978
Pick-to: 6.5 6.6
Change-Id: Ic31c70c9fe86f4da6850ed4baf28afc1cbfe1dae
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
Reviewed-by: Elias Hautala <Elias.Hautala@qt.io>
Not all compiler warnings can be fixed, because the example
supports multiple styles through one executable, and hence
cannot use compile-time style selection. Document this.
Fixes: QTBUG-110827
Pick-to: 6.5 6.6
Change-Id: I80a92890d427967ff21d4f457c373e75a937195f
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
The patch set 730c1d1630 adds support for
landscape mode in gallery example. But this causes glitch when window
resizes dynamically (as in this scenario, the virtual keyboard shows up
and it dynamically resizes window).
This patch adds an option in settings to enable landscape mode only
when required and disabled by default.
Fixes: QTBUG-114693
Pick-to: 6.5 6.6
Change-Id: I64cd4d48ade10a4f43615663a0b7aef3e13a2895
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
- Use add_qml_module_to_macos_app_bundle and copy other things from examples
like attachedstyleproperties and painteditem in order to get it to work on
macOS.
- Move qt_standard_project_setup() before qt_add_qml_module() (which is
called by the three add_subdirectory calls). This is required to avoid
issues with subdirectories on Windows.
Pick-to: 6.5 6.6
Change-Id: Ie0d859c743d0b8b798238346cc2c738ece362c99
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
- Don't allow it to fill vertically, because it results in downscaling
artifacts.
- Update the background images to be 128x128 so that no downscaling
occurs (when using the correct size hints in QML).
Fixes: QTBUG-114492
Pick-to: 6.2 6.5 6.6
Change-Id: I473ee26f5ad630bbfa1f89c2a977081fae9eaa4e
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
- Elide radio station name and frequency text.
- Remove "MHz" text. It's not necessary for the end user and it saves horizontal space.
- Move "Sort by" label above options to save horizontal space.
- Fix "Compact" button not being checkable.
- Reduced excessive vertical spacing between some elements.
Fixes: QTBUG-114407
Pick-to: 6.2 6.5 6.6
Change-Id: I0dc2401b6e9ef48fae3212df9c36dd8f5d04a4e9
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
Fix \quotefile path as source files have been moved. Also, add .theme
as a valid extension for example files.
Pick-to: 6.5
Change-Id: Icfcb85fdfb99e86eb97ef6e1b53e4fa5771095a3
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
- Move all (non-icon) images into one directory for simplicity.
- Add explicit qrc prefix to image paths to make them absolute
and ensure they're found, fixing some errors.
- Fix "XMLHttpRequest: Using GET on a local file is disabled by
default" warning by setting QML_XHR_ALLOW_FILE_READ to 1.
- Fix "Parameter "page" is not declared" warning.
- Replace qt6_add_resources with qt_standard_project_setup and
qt_add_qml_module.
- Remove unnecessary quotes from CMake file paths.
- Replace local settings instance that was accessed via the
root context through several files with a singleton.
- Make the custom Controls style a proper QML module.
- Make the settings singleton its own module to avoid cyclic imports.
- Adapt documentation to new paths.
- Some ids (in Main.qml) are unused by QML, but used by the
documentation, so those are left alone.
- Fix qmake build files after these changes.
Fixes: QTBUG-112618
Pick-to: 6.5
Change-Id: I10f6e1f2013fe35eaf4e1e0f4aaa98e6a1ab9c15
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Use e.g. Qt6::Core instead of Qt::Core. This is better matching the
find_package(Qt6 ...) call, and also avoids issues that the versionless
targets have.
Pick-to: 6.5
Task-number: QTBUG-113277
Change-Id: Ib80f885e9f73fb9ad54b9e9b22cae2318877dc07
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
The FileSystemModule qmldir was explicitly put into the "/" resource
prefix, but that prefix is not a default qml import path. That caused
the qml module not to be found when building on macOS as an app
bundle, which relies only on resources and not the file system to find
the module.
To ensure the module qmldir is found in the resources, we want it to
be placed in the default qml import path ':/qt/qml'. To do that,
remove the previously specified RESOURCE_PREFIX option and enable
the QTP0001 policy by requiring Qt 6.5+, which will put the module
qmldir into :/qt/qml/FileSystemModule/qmldir.
Because the policy also changes the resource prefix for other
resources (images), adjust all Image source urls to be relative paths
(relative to the component), instead of absolute paths.
Also adjust the qmake generated qrc file to place the files into the
new resource prefix.
Amends 213e932e13
Fixes: QTBUG-112683
Change-Id: I5205cf6d399a6faaf7cce68d55c71dade37479a7
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
Reviewed-by: Dennis Oberst <dennis.oberst@qt.io>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io>
The '\meta category' command was used for tagging examples with a
specific category, used in Qt Creators Welcome mode.
As we want to also generate lists of examples belonging to a category
elsewhere in the documentation, replace the command with a macro that
expands to the original \meta command and also adds the example to
a group using the \ingroup command. This way, the category names can
be used as arguments to the \generatelist or \annotatedlist commands.
Pick-to: 6.5
Task-number: QTBUG-112731
Change-Id: I673207be9dd73a010069828b92146c37e45e9143
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Remove \generatelist example[files|images] commands, they do not
produce any output, only warnings.
* Add missing full stop to \brief descriptions.
Pick-to: 6.5
Change-Id: I90c67b8c3f3bbe901fa083f781e9056da7763671
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
The quickcontrol feature represented in side-panel and swipe-to-remove
were already part of gallery example and hence, removing these two
examples
Fixes: QTBUG-110989
Pick-to: 6.5.0
Change-Id: I496dfe7ee2bea98f918b4e3b72673388c51cda6b
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Every instance of AUTO_RESOURCE_PREFIX has been replaced by either
qt_standard_project_setup(REQUIRES 6.5) or with
qt_policy(SET QTP0001 NEW), mainly in tests.
In addition, I added a warning message for the case where
AUTO_RESOURCE_PREFIX is used.
Pick-to: 6.5
Task-number: QTBUG-96233
Change-Id: I323a15e9d0bb5fe6ba649365314af9fc2ad67bda
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
Adapt to qtbase/14f9f00fdb2dc428610c08e3d9d03e38e9602166, fixing:
sqlcontactmodel.cpp:40:13: warning: void QSqlQueryModel::setQuery(const QSqlQuery&) is deprecated: QSqlQuery is
not meant to be copied. Pass it by move instead.
[-Wdeprecated-declarations]
Pick-to: 6.5 6.4 6.2
Change-Id: I88d7f30247876f55b0114785efcf4ce580de0ab8
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
This example shows the customization of Qt Quick Controls by
implementing a simple file system explorer. Using a C++ model, entries
are visualized in a TreeView, and text files can be read.
Fixes: QTBUG-108289
Change-Id: I966dcf65e40d3b727889dc14c65edd0ffcc1b878
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>