La lecture et l'écriture de fichiers en QML (Qt)
Je suis en train de mettre en œuvre La lecture et l'écriture de fichiers dans QML et suis tombé sur l'article lié à partir de Nokia, mais n'ont pas été en mesure d'utiliser avec succès ce qui paraît évident exemple de code. Je pense que j'ai pas besoin de dire que je suis un newbie dans ce domaine.
Où dois-je placer ce bout de code (qui est le deuxième extrait de code sur la page.
):
#include "fileio.h"
Q_DECL_EXPORT int main(int argc, char *argv[])
{
qmlRegisterType<FileIO, 1>("FileIO", 1, 0, "FileIO");
}
Aussi je reçois un message d'erreur à l'égard de qmlRegisterType n'étant pas inscrit dans le contexte quand je place le code ci-dessus extrait de code dans mon formulaire principal.
Quelqu'un peut-merci de vous offrir quelques conseils sur la façon de mettre en œuvre des ce (ou n'importe quelle méthode pour lire et écrire des fichiers QML /Qt)?
Frank, merci pour la réponse. En fait le code dans le lien est une mise en œuvre de l'accès au fichier en C++ et ma question est de savoir comment effectuer cette (encore une fois en C++)
Ce que vous appelez votre "formulaire principal" ?
alexisdm - je n'ai pas d'ID pour le principal, il réside à la main.qml
OriginalL'auteur Nepaluz | 2013-07-26
Vous devez vous connecter pour publier un commentaire.
L'exemple écrit par Nokia dans le tutoriel n'est pas un pur QML programme. Il contient à la fois le C++ et QML. Ce type de programme est généralement un programme en C++ qui permet de charger un fichier QML et le restitue. Les programmes C++ commencent généralement avec une fonction appelée
int main(int argc, char *argv[]);
. Dans votre cas, c'est cette "main()" fonction qui charge votre QML fichier principal (main.qml
) fichier et l'affiche.Mais avant de charger le QML fichier principal, vous avez à dire à la QML système que vous allez utiliser un QML classe appelée
FileIO
. Pour cela, vous devrez utiliser leint qmlRegisterType<T>(const char * package, int majorVersion, int minorVersion, char * classNameInQML);
fonction C++. Il faut environ 5 paramètres :Pour utiliser cette fonction, vous devez inclure un en-tête C++ en C++ fichier là où vous l'écrire :
<QtDeclarative>
.<QtQml>
.À la fin, vous devriez avoir quelques trucs de ce genre :
main.cpp (fichier avec le main() fonction C++) :
principal.qml fichier à charger (à droite de la Nokia tutoriel) :
NB : j'ai changé quelques "FileIO" de Nokia tutoriel afin d'éviter les confusions.
OriginalL'auteur air-dex
Si vos fichiers texte, vous pouvez utiliser XMLHttpRequest (à la fois pour la lecture et l'écriture), comme ceci:
Ici est une démo de l'application (Qt 5.6):
P. S. Notez que tous les navigateurs modernes vont jeter de l'exception de sécurité, si vous essayez d'utiliser des fonctions comme ci-dessus, mais QML permettre cela, même pour le fichier réécrit). Pas sûr que ce soit en conception ou une erreur, cependant.
OriginalL'auteur evg656e
Avec le V-Jouer SDK, vous pouvez utiliser le FileUtils classe de QML, accès au système de fichiers sur n'importe quelle plateforme.
Ce serait ressembler à ceci:
OriginalL'auteur Alex Huber
Un exemple complet de FileIO peut être trouvé sur cette page: https://qmlbook.github.io/ch17-extensions/extensions.html#fileio-implementation
Et le code source peut être trouvé ici:
https://github.com/qmlbook/qmlbook/tree/master/docs/ch17-extensions/src/fileio
Merci de signaler les liens brisés. Je l'ai mis à jour.
OriginalL'auteur Jake W