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