class QFileOpenEvent#

QFileOpenEvent类提供了一种在请求打开文件或URL时发送的事件。更多

Inheritance diagram of PySide6.QtGui.QFileOpenEvent

概述#

方法#

注意

此文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译有问题,您还可以通过在https:/bugreports.qt.io/projects/PYSIDE创建工单来告诉我们。

详细描述#

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

当操作系统请求打开文件或URL时,文件打开事件将被发送到QApplication::instance()。这是一个高级事件,它可以根据用户的桌面环境由不同的用户操作引起;例如,在macOS上的Finder中双击文件图标。

此事件仅用于通知应用程序有请求。它可以安全地忽略。

注意

该类目前仅支持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 子类的实现演示了如何处理 QFileOpenEvent 以打开文件,例如,在应用程序的 Dock 图标上拖放的文件。

from PySide6.QtWidgets import QApplication

from PySide6.QtGui import QFileOpenEvent
from PySide6.QtWidgets import QPushButton
class MyApplication(QApplication):

# public
    MyApplication(int argc, char **argv)
    super().__init__(argc, argv)


    bool event(QEvent event) override

        if event.type() == QEvent.FileOpen:
            openEvent = QFileOpenEvent(event)
            url = openEvent.url()
            if url.isLocalFile():
                localFile = QFile(url.toLocalFile())
                # read from local file
             elif url.isValid():
                # process according to the URL's schema
            else:
                # parse openEvent->file()


        return QApplication.event(event)

请注意,QFileOpenEvent::file() 并不保证是本地文件的名称,可以使用 QFile 打开。字符串的内容取决于源应用程序。

__init__(arg__1)#
参数:

arg__1QFileOpenEvent

__init__(file)
参数:

file – str

__init__(url)
参数:

urlQUrl

file()#
返回类型:

str

返回应用程序应该打开的文件名。

这并不保证是本地文件的路径。

openFile(file, flags)#
参数:
返回类型:

bool

注意

此函数已弃用。

解析 file() 返回的字符串

在此事件引用的 file 上打开一个 QFile,以 flags 指定的模式。如果成功则返回 true,否则返回 false

这是必要的,因为某些文件不能按名称打开,但需要在此事件中存储的特定信息。

url()#
返回类型:

QUrl

返回应用程序应该打开的 URL。