Класс 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.15/qfileopenevent.html