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 |
- Liste de tous les membres, y compris les membres hérités
- Membres dépréciés
- QFileOpenEvent fait partie des classes d'événements.
Fonctions publiques
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.
© 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.