J'essaie d'apprendre un peu de qt et qml et je veux faire une petite application qui va surveiller un fichier local pour les changements et modifier un composant Text
lorsque des changements se produisent. J'ai basé mon code sur ce answer, mais même si je ne reçois aucun avertissement/erreur pendant la compilation et l'exécution, la connexion du signal fileChanged
du QFileSystemWatcher
aux éléments qml connections
, ne fonctionne pas, ie, le texte ne change pas quand watchedFile.txt
est modifié. Comment puis-je vérifier si le signal est reçu dans le code qml?Qt: connexions C++ de signal à qml
Voici mon code:
C++:
int main(int argc, char *argv[]) {
QGuiApplication app(argc, argv);
QFileSystemWatcher watcher;
watcher.addPath(QStringLiteral("qrc:/watchedFile.txt"));
QQmlApplicationEngine* engine = new QQmlApplicationEngine;
engine->rootContext()->setContextProperty("cppWatcher", &watcher);
engine->load(QUrl(QStringLiteral("qrc:/main.qml")));
return app.exec();
}
QML:
import QtQuick 2.7
import QtQuick.Controls 2.0
ApplicationWindow {
visible: true
width: 640
height: 480
Text {
id: text
text:"TEXT"
}
Connections {
target: cppWatcher
onFileChanged: {
text.text = "CHANGED"
}
}
}
« même si je ne reçois pas d'avertissement/erreur lors de la compilation et l'exécution » absence de messages d'avertissement/d'erreur ne signifie pas l'absence d'erreurs. –