Unsolved 30 Sekunden lang überprüfen ob Datei existiert
-
@notyourfan beides ist möglich,
hatte anscheinend deine Situation nur falsch verstanden
-
Okay,
hab mich mal eben kurz "reingefuchst" :D
void QFileSystemWatcher::directoryChanged(const QString & path)
"This signal is emitted when the directory at a specified path, is modified (e.g., when a file is added, modified or deleted) or removed from disk"
Genau das habe ich gesucht, danke !!
Nur mal eben eine Verständnisfrage …
was muss ich an "const QString" übergeben?
"path" ist klar, der bekommt den Dateipfad.
Ist "const QString" der Dateiname? -
@notyourfan said in 30 Sekunden lang überprüfen ob Datei existiert:
was muss ich an "const QString" übergeben?
Nichts, das bekommst du als Parameter in deinem slot.
Du verbindest gans normal dein Slot mit diesem Signal. -
@notyourfan
wenn du eine Datei beobachten willst, dann ist es der Pfad zur Datei inklusive Dateiname und Endung demKonstruktivConstructor zu übergeben.Wenn Ordner, dann nur Pfad des Ordners inkl Ordnername.
Aber reine Vermutung, hab die Klasse selbst noch nicht benutzt 🤷♂️
-
Naja, das ist die nächste Frage.
Sobald ich mein Button clicke wird die folgende Funktion ausgeführt:void XYZ::on_serialInteraceButton_clicked() { executePython("interace.py") }
und mein Skript wird dann ebenfalls ausgeführt.
Danach (vorausgesetzt mein Skript läuft erfolgreich durch und erzeugt eine JSON-Datei) wird eine Datei erzeugt und unter "D:" abgelegt.Was genau soll ich dann mit dem "Signal" anfangen?
Weil theoretisch muss ich direkt nach "executePython("interface.py") 30 Sekunden lang überprüfen ob da eine Datei "geändert" worden ist.
-
@j-hilk ich hab die Klasse selbst leider auch noch nicht benutzt :S
-
@notyourfan
wenn du deinen Zielordner überwachst, und dein Skript die Datei erstellt, wird das signaldirectoryChanged(const QString &path)
ausgelöst. in der Variable path steht nun der Pfad + Name der neuen Datei -
@j-hilk Verstanden.
Was genau soll mir das aber für mein vorhaben bringen? :-O
Ich möchte ja nicht detektieren welche Datei erzeugt wurde, dies weis ich schon da die Datei die erzeugt wird immer den selben Namen hat. -
void XYZ::on_serialInteraceButton_clicked() { connect(&filesystemWatcher, SIGNAL(directoryChanged(const QString &), this, mySlot(const QString &)); executePython("interace.py"); } void XYZ::mySlot(const QString &path) { // Hier prüfen ob path die Datei ist, die du brauchst }
Zusätzlich kannst du noch einen oneshot Timer starten, der nach 30sek abläuft und in dem Slot dann ein disconnect für directoryChanged.
-
@notyourfan eben, vergleich den Namen in Pfad mit dem den du erwartest, wenn sie übereinstimmen ist deine Datei erstellt worden.