Spec-Zone.ru › Qt 5.14

Класс 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-адрес. Это событие высокого уровня, которое может быть вызвано различными действиями пользователя в зависимости от используемой оболочки рабочего стола; например, двойным щелчком по значку файла в Finder на macOS.

Это событие используется только для уведомления приложения о запросе. Его можно безопасно проигнорировать.

Примечание: Этот класс в настоящее время поддерживается только для macOS.

Пример для macOS

Для того, чтобы вызвать событие на macOS, приложение должно быть настроено для информирования ОС о том, на какие типы файлов оно должно реагировать.

Например, следующий Info.plist файл объявляет, что приложение может действовать как просмотрщик для файлов с расширением 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>CFBundleTypeExtensions</key>
            <array>
                <string>png</string>
            </array>
            <key>CFBundleTypeRole</key>
            <string>Viewer</string>
        </dict>
    </array>
</dict>
</plist>

Следующая реализация подкласса QApplication выводит путь к файлу, который, например, был переброшен на значок приложения в Dock.

#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 в режиме, заданном параметром flags. Возвращает true при успехе; в противном случае возвращает false.

Это необходимо, так как некоторые файлы нельзя открыть по имени, но требуют конкретной информации, хранящейся в этом событии.

Эта функция была добавлена в Qt 4.8.

QUrl QFileOpenEvent::url() const

Возвращает открываемый URL-адрес.

Эта функция была добавлена в Qt 4.6.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qfileopenevent.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API