QFileOpenEvent Class | Qt GUI | Qt 6.11.1
Description: The QFileOpenEvent class provides an event that will be sent when there is a request to open a file or a URL.

- Qt 6.11
- Qt GUI
- C++ Classes
- QFileOpenEvent
- Qt 6.11.1 Reference Documentation

# QFileOpenEvent Class

The QFileOpenEvent class provides an event that will be sent when there is a request to open a file or a URL. More...

Header: | `#include <QFileOpenEvent>`
CMake: | `find_package(Qt6 REQUIRED COMPONENTS Gui)` `target_link_libraries(mytarget PRIVATE Qt6::Gui)`
qmake: | `QT += gui`
Inherits: | QEvent

- List of all members, including inherited members
- Deprecated members
- QFileOpenEvent is part of Event Classes.

## Public Functions

QString | file() const
QUrl | url() const

## Detailed Description

File open events will be sent to the QApplication::instance() when the operating system requests that a file or URL should be opened. This is a high-level event that can be caused by different user actions depending on the platform; for example, double clicking on an file in the Finder or dragging a file to the application's Dock icon on macOS, or sharing a file from another application on iOS.

This event is only used to notify the application of a request. It may be safely ignored if the file should not be opened.

### Apple platforms

In order to trigger the event on Apple platforms, the application must be configured to let the OS know what kind of file(s) it should react on.

For example, the following `Info.plist` file declares that the application can act as a viewer for PNG files:

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

The following key is also necessary on iOS for the application to show up as an "Open With" action in e.g. the Files application:

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

The following implementation of a QApplication subclass shows how to handle QFileOpenEvent to open the file that was, for example, dropped on the Dock icon of the 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);
         }
     };

Note how `QFileOpenEvent::file()` is not guaranteed to be the name of a local file that can be opened using QFile. The contents of the string depend on the source application.

## Member Function Documentation

### QString QFileOpenEvent::file() const

Returns the name of the file that the application should open.

This is not guaranteed to be the path to a local file.

### QUrl QFileOpenEvent::url() const

Returns the url that the application should open.