QFileOpenEvent Class

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

头文件: #include <QFileOpenEvent>
qmake: QT += gui
基类: QEvent

公有函数

QString file() const
bool openFile(QFile &file, QIODevice::OpenMode flags) const
QUrl url() const
  • 6 个公有函数继承自 QEvent

其他继承的成员

  • 1 个属性继承自 QEvent
  • 1 个静态公有成员继承自 QEvent
  • 2 个受保护的变量继承自 QEvent

详细描述

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

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 user's desktop environment; for example, double clicking on an file icon in the Finder on macOS.

This event is only used to notify the application of a request. It may be safely ignored.

Note: This class is currently supported for macOS only.

macOS Example

In order to trigger the event on macOS, 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 files with a PNG extension:


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

The following implementation of a QApplication subclass prints the path to the file that was, for example, dropped on the Dock icon of the application.


  #include <QApplication>
  #include <QFileOpenEvent>
  #include <QtDebug>

  class MyApplication : public QApplication
  {
  public:
      MyApplication(int &argc, char **argv)
          : QApplication(argc, argv)
      {
      }

      bool event(QEvent *event)
      {
          if (event->type() == QEvent::FileOpen) {
              QFileOpenEvent *openEvent = static_cast<QFileOpenEvent *>(event);
              qDebug() << "Open file" << openEvent->file();
          }

          return QApplication::event(event);
      }
  };

成员函数

QString QFileOpenEvent::file() const

Returns the file that is being opened.

bool QFileOpenEvent::openFile(QFile &file, QIODevice::OpenMode flags) const

Opens a QFile on the file referenced by this event in the mode specified by flags. Returns true if successful; otherwise returns false.

This is necessary as some files cannot be opened by name, but require specific information stored in this event.

This function was introduced in Qt 4.8.

QUrl QFileOpenEvent::url() const

Returns the url that is being opened.

This function was introduced in Qt 4.6.