|
JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
|
Liste de lignes libellé/valeur, pour un Repeater ou une ListView. More...
#include <SheetRowModel.h>
Public Types | |
| enum | Role { IdRole = Qt::UserRole + 1 , LabelRole , ValueRole } |
| Rôles lisibles depuis QML : model.rowId, model.label, model.value. More... | |
Public Member Functions | |
| SheetRowModel (QObject *parent=nullptr) | |
| int | rowCount (const QModelIndex &parent={}) const override |
| QVariant | data (const QModelIndex &index, int role) const override |
| QHash< int, QByteArray > | roleNames () const override |
| void | setRows (QVector< SheetRow > rows) |
| Remplace toutes les lignes. | |
Private Attributes | |
| QVector< SheetRow > | _rows |
Liste de lignes libellé/valeur, pour un Repeater ou une ListView.
Pourquoi un modèle et non une table de chaînes. Les six caractéristiques, les six jets de sauvegarde et les dix-huit compétences sont des répétitions : la conception veut en décrire une et laisser le nombre à la donnée. Avec une table indexée par clé, chaque ligne aurait dû être posée à la main dans le fichier d'interface — ce qui remettait la structure de la fiche dans le fichier, c'est-à-dire exactement ce dont le LOT-85 s'était plaint.
Ce que ce modèle ne fait pas : il ne formate rien. La valeur arrive déjà mise en forme par hmi::characterSheetValues, logique pure et testée. Reformater ici aurait produit deux vérités sur la façon d'écrire un modificateur.
|
explicit |
|
nodiscardoverride |
|
nodiscardoverride |
|
nodiscardoverride |
| void hmi::SheetRowModel::setRows | ( | QVector< SheetRow > | rows | ) |
Remplace toutes les lignes.
Réinitialisation complète et non des insertions une à une : la liste est recalculée d'un bloc à chaque changement de fiche, jamais modifiée par morceaux.
|
private |