10
10
## Overview
11
11
12
12
This model-view-viewmodel framework is intended for large Qt based scientific
13
- applications written in C++. Project was created as a playground toward GUI
13
+ applications written in C++. The Project was created as a playground toward GUI
14
14
refactoring of [ BornAgain project] ( https://www.bornagainproject.org ) .
15
15
16
16
Main features of the framework are:
17
17
18
18
+ Application model to store arbitrary data of GUI session.
19
19
+ Serialization of application models to json.
20
- + Undo/redo based on command pattern.
21
- + View model to show parts of application model in Qt widgets. Depends on Qt.
20
+ + Undo/redo based on a command pattern.
21
+ + View model to show parts of an application model in Qt widgets. Depends on Qt.
22
22
+ Scientific plotting based on [ qcustomplot] ( https://www.qcustomplot.com/ ) .
23
23
+ Automatic generation of widgets from model content.
24
24
+ Property editors.
@@ -34,13 +34,13 @@ Main features of the framework are:
34
34
35
35
## Installation instructions
36
36
37
- ```
37
+ ``` sh
38
38
git clone --recurse-submodules https://github.com/gpospelov/qt-mvvm.git
39
- mkdir < build-dir> ; cd < build-dir>
40
- cmake <source> ; make -j8; ctest
39
+ mkdir ./ build; cd ./ build
40
+ cmake .. ; make -j8; ctest
41
41
42
- # run one of examples
43
- <build-dir> /bin/collidingmice
42
+ # run one of examples from ./build
43
+ . /bin/collidingmice
44
44
```
45
45
46
46
## Example
@@ -66,7 +66,7 @@ See short animation [here](doc/assets/colliding-mice.gif).
66
66
The demo shows that ` qt-mvvm ` library allows to equip the GUI with the
67
67
serialization and undo/redo and to provide proper model/view relations via
68
68
relatively small modifications to the original code. Implementing similar
69
- features from the scratch in bare metal Qt would take much more time and the
69
+ features from scratch in bare metal Qt would take much more time and the
70
70
resulting code wouldn't be easily transferable to another project.
71
71
72
72
This and other examples can be found in [ examples] ( examples/README.md )
@@ -149,11 +149,11 @@ editing.
149
149
The library is intended for large GUI applications. The definition of ` large ` is
150
150
quite arbitrary and means something in the range 20k - 200k lines of code. The
151
151
main logic here is that using the additional library for smaller Qt applications
152
- is redundant, Qt has everything that may be required. If small GUI becomes messy
152
+ is redundant, Qt has everything that may be required. If a small GUI becomes messy
153
153
with time, it can always be refactored or even rewritten from scratch.
154
154
155
155
However, when the number of views to show the same data is getting large, and
156
- the GUI enters the range 20k - 200k, this is were a given library might help in
156
+ the GUI enters the range 20k– 200k, this is where a given library might help in
157
157
proper separation of data, logic, and UI. When the GUI grows even further, well,
158
158
developers of such large GUI know already what they need and probably have
159
159
already implemented similar machinery.
0 commit comments