問題タブ [qfilesystemwatcher]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
386 参照

c++ - QFileSystemWatcher はデバイス ノードで動作する必要がありますか?

Qt は私にとって初めてなので、まだすべてのイディオムを知っているわけではありません。として公開するカスタム Linux ドライバーがあり/dev/mydeviceます。ハードウェアで興味深いことが起こると、ドライバーはそのファイルにデータを書き込みます。私はこれが動作することをテストしました

ボタンを押すと、データが画面にダンプされるのを見ることができます。

ここで、何がダンプされているかを示す単純な GUI が必要です。QFileSystemWatcher「ファイルへの変更についてファイルシステムを監視する」ため、良い候補のように思えますが、fileChangedシグナルを発しません。

変更時間などを見ているだけだQFileSystemWatcherと思いますか?QFileはシグナルを実装していないのでreadyRead、新しいスレッドを生成してループする必要がありQFile::read()ますか? または、それを行う独自の実装QIODeviceですか?私の目標を達成するための最良の方法は何ですか?

おもちゃの例です。

main.cpp:

qfswtestcon.pro:

0 投票する
0 に答える
691 参照

c++ - Windows 上の Qt QFileSystemWatcher が fileChanged() シグナルを送信しない

別のアプリケーションによって変更されたログ ファイルを追跡しています。Linux では、他のアプリケーションがファイルを変更するとすぐに fileChanged シグナルを正しく受け取ります。Windows では、QFileSystemWatcher は他のアプリケーションが閉じられるまで fileChanged シグナルを発行しません。

実際に変更されていることを確認するためにメモ帳でログを開こうとしました。メモ帳がログを開くとすぐに、QFileSystemWatcher が fileChanged シグナルを送信します。

私のコード:

私は何か間違ったことをしていますか?ファイルを時々手動でチェックする以外に解決策はありますか?

0 投票する
1 に答える
949 参照

python - QFileSystemWatcher で directoryChanged シグナルを 1 つだけ発行する方法

私のアプリケーションの基本的な前提は次のとおりです。

ディレクトリを監視する QFileSystemWatcher を確立しました。

過去に QFileSystemWatcher を使用したことがありますが、常に完全に機能しています (ディレクトリとファイルの両方の変更に対して)。

アプリケーションは、\Images フォルダー内の画像のスライドショーを表示します。新しい画像が \Images フォルダーに配置されると、スライドショーは新しい画像を含むようにリセットされます。イメージが \Images フォルダから削除されると、スライドショーは再びリセットされます。

私が抱えている問題は次のとおりです。複数の画像を \Images フォルダーにドラッグすると、directoryChanged シグナルが複数回発生します。シグナルが発生し、フォルダーに追加された各画像に対して対応する UpdateImages() ルーチンが実行されます。同時に追加された場合でも (つまり、複数の画像を選択し、それらを \Images にドラッグ アンド ドロップします)。

これは私のルーチンに大混乱を引き起こしています。ディレクトリ変更のバッチに対して、directoryChanged シグナルを 1 回発生させる方法はありますか? つまり、最終イメージがディレクトリに追加されるまで信号を無効にすることはできますか?

どうもありがとう!

0 投票する
2 に答える
161 参照

windows - WinEvent ログと QFileSystemWatcher

WinEvent Logs Windows7 を QFileSystemWatcher に追加しようとしましたが、addPath()メソッドの戻りfalse値。

winevt フォルダーを追加しようとした後、同じ結果が得られます。

Winevt フォルダーには読み取り専用の属性があり、変更できません (変更後、適用、終了、再開の属性は古いままです)。QFileSystemWatcher のドキュメントを読みました:

一般に、監視エラーの理由はシステムに依存しますが、リソースが存在しない、アクセスの失敗、またはプラットフォームに存在する場合は合計監視カウント制限が含まれる場合があります。

しかし、失敗の原因を見つける方法と、それを修正する方法がわかりません。前もって感謝します。

0 投票する
1 に答える
134 参照

qt - QFileSystemWatcher から directoryChanged シグナルを取得すると、新しく追加されたファイルの読み取りが完了しません

「/test」にファイルが追加されたときに通知を受け取りたい。そこで、QFilesystemWatcher の directoryChanged シグナルを使用しました。しかし、「cp aa.txt /test」のときに directoryChanged シグナルが表示され、aa.txt を読み取ったときに不完全な aa.txt がありました。

この場合、ファイルの読み取りが完了したことをどのように知ることができますか?

参考までに、正確なファイル名がわからないため、fileChanged シグナルを使用できません。

0 投票する
1 に答える
1988 参照

c++ - QFileSystemWatcher は、コンソール アプリケーションで fileChanged() を出力しません

私のファイルconsole.h/.cppには、ユーザーにテキストを入力するように求める小さなクラスがあり、ユーザーが「quit」と入力するまでテキストを再度出力します(メソッドを参照consoleMain())。ただし、main.cppには QFileSystemWatcher、ファイルMyTextFile.txtConsole::slotFileChanged(QString)を監視し、テキスト ファイルが変更されるたびに呼び出すもあります。残念ながら、QFileSystemWatcher動作しません。Console::slotFileChanged(QString)テキストファイルを変更しても実行されません。私の知る限りQFileSystemWatcher、メインイベントループが開始された場合にのみ機能し、これは私のコードにも当てはまります。main.cppでを無効にQTimer::singlaShotして mainに置き換えると、 イベント ループには入りませんが、("File changed!")のメッセージが表示されます。emit console.signalStart()QFileSystemWatcher「quit」と入力した後。問題は、ユーザーがコンソールを操作できるようにして、テキスト ファイルが同時に変更されたときに FileWatcher がシグナルを発するようにすることは可能かということです。(コンソールクラスに入れQFileSystemWatcherてヒープに作成しようとしましたが、残念ながら何も変わりませんでした)

これが私のコードです:

console.h

コンソール.cpp

main.cpp