PySide6.QtGui.QFileOpenEvent

class QFileOpenEvent

QFileOpenEvent 类提供了一个事件,当有请求打开文件或URL时,该事件将被发送。更多

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)
Parameters:

arg__1QFileOpenEvent

__init__(file)
Parameters:

文件 – str

__init__(url)
Parameters:

urlQUrl

file()
Return type:

字符串

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

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

openFile(file, flags)
Parameters:
Return type:

布尔

注意

此函数已弃用。

解释由file()返回的字符串

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

这是必要的,因为有些文件无法通过名称打开,但需要此事件中存储的特定信息。

url()
Return type:

QUrl

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