Spec-Zone.ru › Qt

Класс QFileOpenEvent

Класс QFileOpenEvent предоставляет событие, которое будет отправлено при запросе открытия файла или URL. Подробнее...

Заголовок: #include <QFileOpenEvent>
CMake: find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui)
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 <QDebug>
#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);
            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.

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

QUrl QFileOpenEvent::url() const

Возвращает URL, который открывается.

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

Spec-Zone.ru

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