| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
The model types are not part of the core QML runtime and should only be
loaded if you explicitly import them. We cannot enforce that in Qt5 as
some of them are available from the QtQml import, but we can change it
in Qt6.
Change-Id: I1e49e84d748e352537ec2d4af901c034c91d038f
Reviewed-by: Erik Verbruggen <erik.verbruggen@me.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This allows us to support simple object rows by default,
which we expect to be the most common use case for TableModel.
Complex rows are supported, but with a limited subset of functionality.
Things that could be improved:
- Would be nice if we could get arbitrary/dynamic properties
like ListModel has, without the complex code that comes
with it. That way we could get rid of all of the role properties
and users could have their own custom roles. The limitation
of only having built-in roles becomes too restrictive very
quickly.
Change-Id: Icbdb6b39665851c55c69c0b79e0aa523c5d46dfe
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For the display role, we'll return the first role in that column
if it wasn't explicitly specified. For every other role, we can just
return an invalid QVariant. As usual, roleDataProvider can be used
for any data that is missing.
Before this patch, the extra roles were missing from roleNames,
so they couldn't be used in delegates.
Change-Id: I53ac5b75526bcddec44baf834f6a093115a70993
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
data() needs to be invokable because it does more processing to ensure that
DisplayRole will give us something, and we want to be able to access it in
JS code too, not only via the role context property in a delegate binding.
index() needs to be invokable to use it when calling data(). It's useful
for setData() to be invokable so that TableView delegates can be used to
edit the model. However since we don't normally expose numeric roles to
QML, we use string roles, and have to look them up in the roleNames() hash.
Change-Id: I38904ac995fc2bac514bde2dd37a95e0b911c00c
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
QModelIndex has various advantages over separate int row and column in
TableModel API; we intend to expose it via an invokable index() method and
via a context property for delegates, and use it in the invokable data()
function. So we should be consistent by using it in roleDataProvider too.
This way the callback only requires 3 arguments instead of 4, and the first
one is potentially extensible, just in case.
Change-Id: I7b1bc9ea5adb64941979d83901b3566278357e98
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As an alternative to trying to write smarter C++ in the data() accessor, we
give the user full control of data conversion by calling an external JS
function if defined, to map role to the value that data() should return.
This enables extracting arbitrary values, converting the data in arbitrary
ways, or even doing calculations in case the EditRole stores a formula and the
DisplayRole should provide the result, or something like that.
This callback is implemented somewhat like TableView.columnWidthProvider, but
the arguments are more complex: function(row, column, role, rawData)
Change-Id: Ifaf5807f4809e0b5ad1d1c403f65c0707b902f10
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
|
This is a QML type that can be used as a model for the new TableView.
The model data is set by assigning a JavaScript array to the rows property
(or by calling appendRow()). After data has been assigned for the first time,
the available columns and roles are fixed for the lifetime of the model,
as opposed to ListModel where the dynamicRoles property could be used.
This is done intentionally to simplify the code.
The API is designed to be familiar to users of ListModel:
- To add new rows, use appendRow() and insertRow().
- To modify existing rows, use setRow(), moveRow(), removeRow(), and clear().
[ChangeLog][Qt Labs QML Models] Added the TableModel QML type, a
JavaScript-based model for the new TableView.
Fixes: QTBUG-70334
Change-Id: I55387a08b122227c5624f78af3d450b7695d974a
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|