Spec-Zone.ru › Qt 6.1

Класс 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 на macOS.

#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.1/qfileopenevent.html

Spec-Zone.ru

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