- class QFileOpenEvent#
QFileOpenEvent
类提供了一种在请求打开文件或URL时发送的事件。更多…概述#
方法#
def
__init__()
def
file()
def
openFile()
def
url()
注意
此文档可能包含从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__1 –
QFileOpenEvent
- __init__(file)
- 参数:
file – str
- __init__(url)
- 参数:
url –
QUrl
- file()#
- 返回类型:
str
返回应用程序应该打开的文件名。
这并不保证是本地文件的路径。
- openFile(file, flags)#
- 参数:
file –
QFile
flags –
OpenModeFlag
组合
- 返回类型:
bool
注意
此函数已弃用。
解析
file()
返回的字符串在此事件引用的
file
上打开一个 QFile,以flags
指定的模式。如果成功则返回true
,否则返回false
。这是必要的,因为某些文件不能按名称打开,但需要在此事件中存储的特定信息。
返回应用程序应该打开的 URL。