qtとqmlの少し勉強しようとしていますが、ローカルファイルの変更を監視し、変更が発生したときにText
コンポーネントを変更する小さなアプリケーションを作りたいと思います。私はこのanswerに私のコードに基づいていましたが、コンパイルと実行中に警告/エラーが発生していなくてもQFileSystemWatcher
のシグナルをQFileSystemWatcher
のqml connections
エレメントに接続すると動作しません。つまり、テキストは変更されません。watchedFile.txt
変更されます。信号がqmlコードで受信されているかどうかを確認する方法はありますか?qt:qml接続へのQt:C++シグナル
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"
}
}
}
警告/エラーメッセージの「私はコンパイル時に警告/エラーを取得し、実行していないのですにもかかわらず、」存在しないことは、エラーがないことを意味するものではありません。 –