QFileOpenEvent 类

QFileOpenEvent 类提供当有打开文件或 URL 请求时将发送的事件。 更多...

头: #include <QFileOpenEvent>
qmake: QT += gui
继承: QEvent

公共函数

QString file () const
bool openFile (QFile & file , QIODevice::OpenMode flags ) const
QUrl url () const

详细描述

文件打开事件会被发送给 QApplication::instance () 当操作系统请求文件或 URL 应被打开时。这是高级事件,可能由不同的用户动作 (取决于用户的桌面环境) 导致。例如:在 macOS 的 Finder 中双击文件图标。

此事件仅用于通知请求的应用程序。它可以被安全地忽略。

注意: 此类目前只支持 macOS。

macOS 范例

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.

例如,以下 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) override
    {
        if (event->type() == QEvent::FileOpen) {
            QFileOpenEvent *openEvent = static_cast<QFileOpenEvent *>(event);
            qDebug() << "Open file" << openEvent->file();
        }
        return QApplication::event(event);
    }
};
					

成员函数文档编制

QString QFileOpenEvent:: file () const

返回正在被打开的文件。

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

打开 QFile file referenced by this event in the mode specified by flags 。返回 true 若成功;否则返回 false .

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

该函数在 Qt 4.8 引入。

QUrl QFileOpenEvent:: url () const

返回正在被打开的 URL。

该函数在 Qt 4.6 引入。