<feed xmlns='http://www.w3.org/2005/Atom'>
<title>qt-labs/qtdotnet.git/tests/GeneratorTestApp/Main.qml, branch dev</title>
<subtitle>Qt/.NET enables the integration of Qt with .NET libraries and applications.
</subtitle>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt-labs/qtdotnet.git/'/>
<entry>
<title>Refactor example projects</title>
<updated>2025-11-26T18:07:46+00:00</updated>
<author>
<name>Miguel Costa</name>
<email>miguel.costa@qt.io</email>
</author>
<published>2025-11-19T18:21:28+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt-labs/qtdotnet.git/commit/?id=ad127a5e96c5c6d40ba6d2c8d4596d354670db28'/>
<id>ad127a5e96c5c6d40ba6d2c8d4596d354670db28</id>
<content type='text'>
  * Create new .sln in the `examples` dir
  * Use package when building examples outside of the topmost .sln
  * Disable build of examples by default in the topmost .sln
      - Projects can still be manually built and debugged
  * Renamed `GeneratorTestApp` as `Primes`
  * Renamed `PackageTestApp` as `CityTemperatures`

Change-Id: I333ba1941f3ccb021cb2681da09bcad8024ae186
Reviewed-by: Karsten Heimrich &lt;karsten.heimrich@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
  * Create new .sln in the `examples` dir
  * Use package when building examples outside of the topmost .sln
  * Disable build of examples by default in the topmost .sln
      - Projects can still be manually built and debugged
  * Renamed `GeneratorTestApp` as `Primes`
  * Renamed `PackageTestApp` as `CityTemperatures`

Change-Id: I333ba1941f3ccb021cb2681da09bcad8024ae186
Reviewed-by: Karsten Heimrich &lt;karsten.heimrich@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Expose ObservableCollection&lt;T&gt; as QAbstractListModel</title>
<updated>2025-10-21T08:43:41+00:00</updated>
<author>
<name>Karsten Heimrich</name>
<email>karsten.heimrich@qt.io</email>
</author>
<published>2025-10-17T16:47:41+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt-labs/qtdotnet.git/commit/?id=bfb6e53a5f7f365e11faef67c1f4114a225c33db'/>
<id>bfb6e53a5f7f365e11faef67c1f4114a225c33db</id>
<content type='text'>
Allow QML/Qt views to bind directly to .NET ObservableCollection&lt;T&gt; (and
similar) and receive granular updates (Add/Remove/Replace/Move/Reset)
without requiring item type T to implement INotifyPropertyChanged.

* Add new GenerateObservableAsModel rule
  - Implements ObservableCollection&lt;T&gt;, ReadOnlyObservableCollection&lt;T&gt;,
    and any list-like type implementing INotifyCollectionChanged.
  - Implements granular updates send to corresponding QAbstractItemModel
* Update GenerateListAsModel
  - Excludes observable lists
  - Adds 'rowCountOverride' to satisfy Qt invariants during 'Remove'
    See "Rationale for rowCountOverride"
* Update TypeExtensionsForGenerationRules
  - 'IsObservableList()' combines list-like and ObservableCollection
  - 'ImplementsINotifyCollectionChanged()' detects INotifyCollectionChanged
* Update GeneratorTestApp
  - Add ObservableModel and ObservablePrimes supporting live updates
* Add auto-tests
  - Verify QAbstractListModel surface.
  - Verify all action cases and generated wrapper presence.

Change-Id: I252d98455c6a87ad7787ea12267fca12c6f84c00
Reviewed-by: Karsten Heimrich &lt;karsten.heimrich@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Allow QML/Qt views to bind directly to .NET ObservableCollection&lt;T&gt; (and
similar) and receive granular updates (Add/Remove/Replace/Move/Reset)
without requiring item type T to implement INotifyPropertyChanged.

* Add new GenerateObservableAsModel rule
  - Implements ObservableCollection&lt;T&gt;, ReadOnlyObservableCollection&lt;T&gt;,
    and any list-like type implementing INotifyCollectionChanged.
  - Implements granular updates send to corresponding QAbstractItemModel
* Update GenerateListAsModel
  - Excludes observable lists
  - Adds 'rowCountOverride' to satisfy Qt invariants during 'Remove'
    See "Rationale for rowCountOverride"
* Update TypeExtensionsForGenerationRules
  - 'IsObservableList()' combines list-like and ObservableCollection
  - 'ImplementsINotifyCollectionChanged()' detects INotifyCollectionChanged
* Update GeneratorTestApp
  - Add ObservableModel and ObservablePrimes supporting live updates
* Add auto-tests
  - Verify QAbstractListModel surface.
  - Verify all action cases and generated wrapper presence.

Change-Id: I252d98455c6a87ad7787ea12267fca12c6f84c00
Reviewed-by: Karsten Heimrich &lt;karsten.heimrich@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Load QML files in runtime</title>
<updated>2025-10-20T17:50:38+00:00</updated>
<author>
<name>Miguel Costa</name>
<email>miguel.costa@qt.io</email>
</author>
<published>2025-10-16T19:38:14+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt-labs/qtdotnet.git/commit/?id=152e42472641740199f7ea6d66810941cf6fbe9c'/>
<id>152e42472641740199f7ea6d66810941cf6fbe9c</id>
<content type='text'>
QML files will be loaded in runtime from the file system instead of
being compiled ahead-of-time.

Change-Id: If6bcffa7bad3d9dc4c2d51f7f0629f725c536a04
Reviewed-by: Karsten Heimrich &lt;karsten.heimrich@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
QML files will be loaded in runtime from the file system instead of
being compiled ahead-of-time.

Change-Id: If6bcffa7bad3d9dc4c2d51f7f0629f725c536a04
Reviewed-by: Karsten Heimrich &lt;karsten.heimrich@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Update GeneratorTestApp example</title>
<updated>2025-10-13T20:27:14+00:00</updated>
<author>
<name>Miguel Costa</name>
<email>miguel.costa@qt.io</email>
</author>
<published>2025-09-01T15:20:22+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt-labs/qtdotnet.git/commit/?id=40599d32ff4b679881667df1dd4abf4894417e78'/>
<id>40599d32ff4b679881667df1dd4abf4894417e78</id>
<content type='text'>
Change-Id: I7180c87e2116d595e08233c659f3ef9deba6ab14
Reviewed-by: Karsten Heimrich &lt;karsten.heimrich@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: I7180c87e2116d595e08233c659f3ef9deba6ab14
Reviewed-by: Karsten Heimrich &lt;karsten.heimrich@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Rework QAIM integration</title>
<updated>2025-10-10T20:15:29+00:00</updated>
<author>
<name>Miguel Costa</name>
<email>miguel.costa@qt.io</email>
</author>
<published>2025-08-28T15:55:37+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt-labs/qtdotnet.git/commit/?id=e668dfffa8c33fe662271896db46d5b35742157b'/>
<id>e668dfffa8c33fe662271896db46d5b35742157b</id>
<content type='text'>
C# classes that extend QAIM types will now be generated in C++ using the
following rationale:
  * Depending on the base class of the C# class, the C++ class will
    extend QAIM, ALM or QATM
  * Only C# overrides will have corresponding member functions generated
  * Data type conversion is used to cast a C# object into a QVariant
    (e.g. for the `Data()` override)

The implementation as of this change only supports QAbstractListModel,
and overriding `RoleNames()`, `RowCount()` and `Data()`. Model change
events (e.g. `BeginInsertRows`, `EndInsertRows`, etc.) are also not
currently being notified.

Change-Id: Id1197c233b01eae7988b9d3552d4b06f269dd6b3
Reviewed-by: Karsten Heimrich &lt;karsten.heimrich@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
C# classes that extend QAIM types will now be generated in C++ using the
following rationale:
  * Depending on the base class of the C# class, the C++ class will
    extend QAIM, ALM or QATM
  * Only C# overrides will have corresponding member functions generated
  * Data type conversion is used to cast a C# object into a QVariant
    (e.g. for the `Data()` override)

The implementation as of this change only supports QAbstractListModel,
and overriding `RoleNames()`, `RowCount()` and `Data()`. Model change
events (e.g. `BeginInsertRows`, `EndInsertRows`, etc.) are also not
currently being notified.

Change-Id: Id1197c233b01eae7988b9d3552d4b06f269dd6b3
Reviewed-by: Karsten Heimrich &lt;karsten.heimrich@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Update GeneratorTestApp</title>
<updated>2025-10-02T13:30:01+00:00</updated>
<author>
<name>Miguel Costa</name>
<email>miguel.costa@qt.io</email>
</author>
<published>2025-08-24T21:05:01+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt-labs/qtdotnet.git/commit/?id=12cf7456091f387729e2c9fc893ec0a6a0b973ee'/>
<id>12cf7456091f387729e2c9fc893ec0a6a0b973ee</id>
<content type='text'>
User the same UI for different backend options:
 * Objects created in view delegate
 * View model set to list of objects
 * View model set to list of values
 * View model set to QAIM-based model object

Change-Id: Ic07d939adf959272d338c93ac4c9db056248e9b8
Reviewed-by: Karsten Heimrich &lt;karsten.heimrich@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
User the same UI for different backend options:
 * Objects created in view delegate
 * View model set to list of objects
 * View model set to list of values
 * View model set to QAIM-based model object

Change-Id: Ic07d939adf959272d338c93ac4c9db056248e9b8
Reviewed-by: Karsten Heimrich &lt;karsten.heimrich@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Update GeneratorTestApp</title>
<updated>2025-09-24T13:32:20+00:00</updated>
<author>
<name>Miguel Costa</name>
<email>miguel.costa@qt.io</email>
</author>
<published>2025-08-03T16:26:48+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt-labs/qtdotnet.git/commit/?id=b667dce269143f994d300b165fee75e62f880ad8'/>
<id>b667dce269143f994d300b165fee75e62f880ad8</id>
<content type='text'>
  * QML UI
  * Calling QmlEngine from Program.Main()
  * Do not show console window (OutputType = WinExe)
  * Move native build targets to dedicated qtdotnet.targets file
  * Other minor changes

Change-Id: If0d7a167dbca6b1899d3e0737a7f52c78412c2e4
Reviewed-by: Karsten Heimrich &lt;karsten.heimrich@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
  * QML UI
  * Calling QmlEngine from Program.Main()
  * Do not show console window (OutputType = WinExe)
  * Move native build targets to dedicated qtdotnet.targets file
  * Other minor changes

Change-Id: If0d7a167dbca6b1899d3e0737a7f52c78412c2e4
Reviewed-by: Karsten Heimrich &lt;karsten.heimrich@qt.io&gt;
</pre>
</div>
</content>
</entry>
</feed>
