PySide6.QtGui.QFileOpenEvent¶
- 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)¶
- Parameters:
arg__1 –
QFileOpenEvent
- __init__(file)
- Parameters:
文件 – str
- __init__(url)
- Parameters:
url –
QUrl
- file()¶
- Return type:
字符串
返回应用程序应打开的文件的名称。
这并不保证是本地文件的路径。
- openFile(file, flags)¶
- Parameters:
文件 –
QFile
flags –
OpenModeFlag
的组合
- Return type:
布尔
注意
此函数已弃用。
解释由
file()
返回的字符串在由
flags
指定的模式下,打开此事件引用的file
上的QFile。如果成功,返回true
;否则返回false
。这是必要的,因为有些文件无法通过名称打开,但需要此事件中存储的特定信息。
返回应用程序应打开的URL。