QFileOpenEvent Class
La clase QFileOpenEvent provee un evento que será enviado cuando haya una solicitud para abrir un archivo o una URL. Más...
| Cabecera: | #include <QFileOpenEvent> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui)target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| Hereda: | QEvent |
- Lista de todos los miembros, incluidos los heredados
- Miembros obsoletos
- QFileOpenEvent es parte de Clases de Eventos.
Funciones Públicas
Descripción Detallada
Los eventos de apertura de archivos serán enviados a QApplication::instance() cuando el sistema operativo solicite que un archivo o URL sea abierto. Este es un evento de alto nivel que puede ser causado por diferentes acciones del usuario dependiendo de la plataforma; por ejemplo, hacer doble clic en un archivo en el Finder o arrastrar un archivo al icono del Dock de la aplicación en macOS, o compartir un archivo desde otra aplicación en iOS.
Este evento sólo se utiliza para notificar a la aplicación de una solicitud. Puede ignorarse con seguridad si el archivo no debe abrirse.
Plataformas Apple
Para activar el evento en plataformas Apple, la aplicación debe estar configurada para que el sistema operativo sepa sobre qué tipo de archivo(s) debe reaccionar.
Por ejemplo, el siguiente archivo Info.plist declara que la aplicación puede actuar como visor de archivos 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 siguiente clave también es necesaria en iOS para que la aplicación aparezca como acción "Abrir con" en, por ejemplo, la aplicación Archivos:
<key>UISupportsDocumentBrowser</key> <true/>
La siguiente implementación de una subclase de QApplication muestra cómo manejar QFileOpenEvent para abrir el archivo que, por ejemplo, se dejó caer sobre el icono del Dock de la aplicación.
#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); } };
Observe cómo QFileOpenEvent::file() no está garantizado para ser el nombre de un archivo local que puede ser abierto usando QFile. El contenido de la cadena depende de la aplicación de origen.
© 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.