QFileOpenEvent Class▲
-
Header: QFileOpenEvent
-
CMake:
find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
-
qmake: QT += gui
-
Inherits: QEvent
-
Group: QFileOpenEvent is part of events
Detailed Description▲
File open events will be sent to the QApplication::instance() when the operating system requests that a file or URL should be opened. This is a high-level event that can be caused by different user actions depending on the user's desktop environment; for example, double clicking on an file icon in the Finder on macOS.
This event is only used to notify the application of a request. It may be safely ignored.
This class is currently supported for macOS only.
macOS Example▲
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.
For example, the following Info.plist file declares that the application can act as a viewer for files with a PNG extension:
&
lt;?xml version=
"1.0"
encoding=
"UTF-8"
?&
gt;
&
lt;!
DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd"
&
gt;
&
lt;plist version=
"1.0"
&
gt;
&
lt;dict&
gt;
&
lt;key&
gt;CFBundleDocumentTypes&
lt;/
key&
gt;
&
lt;array&
gt;
&
lt;dict&
gt;
&
lt;key&
gt;CFBundleTypeExtensions&
lt;/
key&
gt;
&
lt;array&
gt;
&
lt;string&
gt;png&
lt;/
string&
gt;
&
lt;/
array&
gt;
&
lt;key&
gt;CFBundleTypeRole&
lt;/
key&
gt;
&
lt;string&
gt;Viewer&
lt;/
string&
gt;
&
lt;/
dict&
gt;
&
lt;/
array&
gt;
&
lt;/
dict&
gt;
&
lt;/
plist&
gt;
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
&
amp;argc, char
**
argv)
:
QApplication(argc, argv)
{
}
bool
event(QEvent *
event) override
{
if
(event-&
gt;type() ==
QEvent::
FileOpen) {
QFileOpenEvent *
openEvent =
static_cast
&
lt;QFileOpenEvent *&
gt;(event);
const
QUrl url =
openEvent-&
gt;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.
Member Function Documentation▲
QString QFileOpenEvent::file() const▲
Returns the name of the file that the application should open.
This is not guaranteed to be the path to a local file.
QUrl QFileOpenEvent::url() const▲
Returns the url that the application should open.
Obsolete Members for QFileOpenEvent▲
The following members of class QFileOpenEvent are deprecated. We strongly advise against using them in new code.
Obsolete Member Function Documentation▲
bool QFileOpenEvent::openFile(QFile &file, QIODevice::OpenMode flags) const▲
This function is deprecated since 6.6. We strongly advise against using it in new code.
interpret the string returned by file()
Opens a QFile on the file referenced by this event in the mode specified by flags. Returns true if successful; otherwise returns false.
This is necessary as some files cannot be opened by name, but require specific information stored in this event.