1921Close
Kevin KoflerOn the 2015-08-26 at 01:41am
Folco (./10) :
- comment la couche Application fait-elle pour proposer des valeurs limites correctes lors de la création/édition ? Elle demande pour chaque donnée à la couche Données ? Fastidieux.
spinBox->setRange(data.getMinimumValue(), data.getMaximumValue());ne m'a pas l'air trop coûteux. Ou sinon, tu utilises l'introspection de QObject: tu définis une convention (genre que pour la propriété foo, tu as les propriétés en lecture seule foo_min et foo_max) et tu modifies le ObjectController de QtPropertyBrowser pour gérer ça automatiquement.
- Dans un cas comme celui-ci : // Save the file stream << QString(GAME_FILE_SIGNATURE) << GAME_FILE_VERSION << Name; if (stream.status() != QDataStream::Ok) { QMessageBox::critical(MainWindow::get(), tr("Error"), tr("Couldn't save to the file %1").arg(FullFilename)); return false; } Modified = false; return true;Cette méthode (open()) qui appartient à la couche Données peut tomber sur plusieurs erreurs, alors deux solutions :
-> elle affiche ses dialogues et renvoie false en cas d'échec-> elle renvoie un code d'erreur, à tester pas la couche Application, qui devra afficher le message idoine. Ca nécessite de créer une énumération en plus, de faire un plus ou moins gros switch dans la partie Application. C'est plus propre sur le papier, mais ça complexifie le code.
C'est à ça que servent les exceptions. Et tu n'es même pas obligé de définir ta classe d'exceptions, tu peux aussi jeter un QString, un std::string, un const char * ou même (style AMS) un int. (Cela dit, on te dira probablement que c'est crade et que les exceptions sont censées toutes dériver de std::exception. smile)
Kevin -> je n'utiliserai pas ce qui est KDE only, et non officiellement supporté. L'avantage de se cantonner à Qt, c'est que ça devrait éviter les mauvaises surprises. smile
Les KDE Frameworks sont faits pour être utilisés séparément, tu n'as plus besoin de l'ensemble des kdelibs comme dans KDE 4. Cela dit, ce qui devrait t'intéresser le plus est QtPropertyBrowser qui est de toute façon Qt-only.

Cela dit, c'est un peu drôle que je donne des conseils pour ce genre d'architecture quand dans mon propre code (KTIGCC), l'interface utilisateurs est la couche de données. gni (Je stocke toutes les informations sur l'arborescence du projet dans des classes dérivées de QListWidgetItem. tongue)