Sur cette page

QFileOpenEvent Class

La classe QFileOpenEvent fournit un événement qui sera envoyé lorsqu'il y a une demande d'ouverture d'un fichier ou d'une URL. Plus d'informations...

En-tête : #include <QFileOpenEvent>
CMake : find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake : QT += gui
Héritages : QEvent

Fonctions publiques

QString file() const
QUrl url() const

Description détaillée

Les événements d'ouverture de fichier sont envoyés à QApplication::instance() lorsque le système d'exploitation demande l'ouverture d'un fichier ou d'une URL. Il s'agit d'un événement de haut niveau qui peut être provoqué par différentes actions de l'utilisateur en fonction de la plateforme ; par exemple, double-cliquer sur un fichier dans le Finder ou faire glisser un fichier vers l'icône Dock de l'application sur macOS, ou partager un fichier à partir d'une autre application sur iOS.

Cet événement n'est utilisé que pour notifier l'application d'une demande. Il peut être ignoré sans risque si le fichier ne doit pas être ouvert.

Plateformes Apple

Pour déclencher l'événement sur les plateformes Apple, l'application doit être configurée de manière à indiquer au système d'exploitation le type de fichier sur lequel il doit réagir.

Par exemple, le fichier Info.plist suivant déclare que l'application peut agir en tant que visionneuse de fichiers PNG :

<?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>

La clé suivante est également nécessaire sur iOS pour que l'application s'affiche en tant qu'action "Ouvrir avec" dans l'application Fichiers, par exemple :

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

L'implémentation suivante d'une sous-classe de QApplication montre comment gérer QFileOpenEvent pour ouvrir le fichier qui a été, par exemple, déposé sur l'icône du Dock de l'application.

#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);
    }
};

Notez que QFileOpenEvent::file() n'est pas garanti être le nom d'un fichier local qui peut être ouvert à l'aide de QFile. Le contenu de la chaîne dépend de l'application source.

Documentation des fonctions membres

QString QFileOpenEvent::file() const

Renvoie le nom du fichier que l'application doit ouvrir.

Il n'est pas garanti qu'il s'agisse du chemin d'accès à un fichier local.

QUrl QFileOpenEvent::url() const

Renvoie l'url que l'application doit ouvrir.

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