QFileOpenEvent 類提供當有打開文件或 URL 請求時將發送的事件。 更多...
| 頭: |
#include <QFileOpenEvent>
|
| CMake: |
find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
|
| qmake: |
QT += gui
|
| 繼承: | QEvent |
| QString | file () const |
| QUrl | url () const |
文件打開事件會被發送給 QApplication::instance () 當操作係統請求文件或 URL 應被打開時。這是高級事件,可能由不同的用戶動作 (取決於用戶的桌麵環境) 導緻。例如:在 macOS 的 Finder 中雙擊文件圖標。
此事件僅用於通知請求的應用程序。它可以被安全地忽略。
注意: 此類目前隻支持 macOS。
In order to trigger the event on macOS, the application must be configured to let the OS know what kind of file(s) it should react on.
例如,以下
Info.plist
file declares that the application can act as a viewer for files with a PNG extension:
<?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>
The following implementation of a QApplication subclass shows how to handle QFileOpenEvent to open the file that was, for example, dropped on the Dock icon of the application.
#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); const QUrl url = openEvent->url(); if (url.isLocalFile()) { QFile localFile(url.toLocalFile()); // read from local file } else if (url.isValid()) { // process according to the URL's schema } else { // parse openEvent->file() } } return QApplication::event(event); } };
Note how
QFileOpenEvent::file()
is not guaranteed to be the name of a local file that can be opened using
QFile
. The contents of the string depend on the source application.
Returns the name of the file that the application should open.
This is not guaranteed to be the path to a local file.
Returns the url that the application should open.