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

Ö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 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.

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.

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