QFileOpenEvent Class
Die Klasse QFileOpenEvent stellt ein Ereignis bereit, das gesendet wird, wenn eine Anforderung zum Öffnen einer Datei oder einer URL vorliegt. Mehr...
Kopfzeile: | #include <QFileOpenEvent> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
Vererbungen: | QEvent |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- Veraltete Mitglieder
- QFileOpenEvent ist Teil von Event Classes.
Öffentliche Funktionen
Detaillierte Beschreibung
Datei-Open-Ereignisse werden an QApplication::instance() gesendet, wenn das Betriebssystem anfordert, dass eine Datei oder URL geöffnet werden soll. Dies ist ein High-Level-Ereignis, das je nach Desktop-Umgebung des Benutzers durch verschiedene Benutzeraktionen ausgelöst werden kann, zum Beispiel durch einen Doppelklick auf ein Dateisymbol im Finder unter macOS.
Dieses Ereignis wird nur verwendet, um die Anwendung über eine Anfrage zu informieren. Es kann sicher ignoriert werden.
Hinweis: Diese Klasse wird derzeit nur für macOS unterstützt.
macOS Beispiel
Um das Ereignis unter macOS auszulösen, muss die Anwendung so konfiguriert werden, dass das Betriebssystem weiß, auf welche Art von Datei(en) es reagieren soll.
Zum Beispiel erklärt die folgende Info.plist
Datei, dass die Anwendung als Betrachter für Dateien mit einer PNG-Erweiterung agieren kann:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleDocumentTypes</key> <array> <dict> <key>CFBundleTypeExtensions</key> <array> <string>png</string> </array> <key>CFBundleTypeRole</key> <string>Viewer</string> </dict> </array> </dict> </plist>
Die folgende Implementierung einer QApplication -Unterklasse zeigt, wie QFileOpenEvent behandelt wird, um die Datei zu öffnen, die z. B. auf dem Dock-Symbol der Anwendung abgelegt wurde.
#include <QApplication> #include <QDebug> #include <QFileOpenEvent> #include <QPushButton> class MyApplication : public QApplication { public: MyApplication(int &argc, char **argv) : QApplication(argc, argv) { } bool event(QEvent *event) override { if (event->type() == QEvent::FileOpen) { QFileOpenEvent *openEvent = static_cast<QFileOpenEvent *>(event); const QUrl url = openEvent->url(); if (url.isLocalFile()) { QFile localFile(url.toLocalFile()); // read from local file } else if (url.isValid()) { // process according to the URL's schema } else { // parse openEvent->file() } } return QApplication::event(event); } };
Beachten Sie, dass QFileOpenEvent::file()
nicht garantiert der Name einer lokalen Datei ist, die mit QFile geöffnet werden kann. Der Inhalt des Strings hängt von der Quellanwendung ab.
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.