Auf dieser Seite

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
Vererbt: QEvent

Öffentliche Funktionen

QString file() const
QUrl url() const

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 Plattform durch verschiedene Benutzeraktionen ausgelöst werden kann, z. B. durch einen Doppelklick auf eine Datei im Finder oder das Ziehen einer Datei auf das Dock-Symbol der Anwendung unter macOS oder die Freigabe einer Datei aus einer anderen Anwendung unter iOS.

Dieses Ereignis wird nur verwendet, um die Anwendung über eine Anfrage zu informieren. Es kann sicher ignoriert werden, wenn die Datei nicht geöffnet werden soll.

Apple-Plattformen

Um das Ereignis auf Apple-Plattformen auszulösen, muss die Anwendung so konfiguriert sein, dass sie dem Betriebssystem mitteilt, auf welche Art von Datei(en) sie reagieren soll.

Die folgende Info.plist Datei erklärt zum Beispiel, dass die Anwendung als Betrachter für PNG-Dateien fungieren 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>LSItemContentTypes</key>
            <array>
                <string>public.png</string>
            </array>
            <key>CFBundleTypeRole</key>
            <string>Viewer</string>
        </dict>
    </array>
</dict>
</plist>

Der folgende Schlüssel ist auch unter iOS erforderlich, damit die Anwendung als "Öffnen mit"-Aktion z. B. in der Anwendung "Dateien" angezeigt wird:

<key>UISupportsDocumentBrowser</key>
<true/>

Die folgende Implementierung einer QApplication Unterklasse zeigt, wie man QFileOpenEvent behandelt, um die Datei zu öffnen, die z.B. auf dem Dock-Icon der Anwendung abgelegt wurde.

#include <QApplication>
#include <QDebug>
#include <QFile>
#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.

Dokumentation der Mitgliedsfunktionen

QString QFileOpenEvent::file() const

Gibt den Namen der Datei zurück, die die Anwendung öffnen soll.

Es ist nicht garantiert, dass dies der Pfad zu einer lokalen Datei ist.

QUrl QFileOpenEvent::url() const

Gibt die Url zurück, die die Anwendung öffnen soll.

© 2026 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.