我正在尝试在 QML 中添加
FileDialog
,我的环境:
qt6-base
, qt6-declarative
软件包已安装代码:
main.qml
import QtQuick
import QtQuick.Window
import QtQuick.Controls
import QtQuick.Dialogs
Window {
Rectangle {
id: mainRect
anchors.fill: parent
Button {
text: qsTr("Open File")
onClicked: fileDialog.open()
}
}
FileDialog {
id: fileDialog
}
}
main.py
import os
import sys
from PyQt6.QtGui import QGuiApplication
from PyQt6.QtQml import QQmlApplicationEngine
def main():
app = QGuiApplication(sys.argv)
engine = QQmlApplicationEngine()
engine.load(os.fspath(Path(__file__).resolve().parent / "qml/main.qml"))
if not engine.rootObjects():
sys.exit(-1)
sys.exit(app.exec())
if __name__ == "__main__":
main()
当我尝试运行时,它会产生此错误:
file:///main.qml:20:5: QML FileDialog: Failed to load non-native FileDialog implementation:
qrc:/qt-project.org/imports/QtQuick/Dialogs/quickimpl/qml/FileDialog.qml:4 module "Qt.labs.folderlistmodel" is
not installed
Segmentation fault (core dumped)
我尝试搜索包 repo 和 pypi 以查找是否有包含此文件夹列表模型的额外包,但我找不到任何包。
我在 Windows 上尝试过
FileDialog
,效果很好,这似乎是 Arch Linux 打包问题,但我不知道在哪里报告。
我已经使用了这个答案中提到的解决方法,使用tkinter
并且它在两个操作系统上都运行良好。
必须安装pyside6:
export QML2_IMPORT_PATH=/usr/local/lib/python3.8/site-packages/PySide6/Qt/qml
在泊坞窗中:
ENV QML2_IMPORT_PATH=/usr/local/lib/python3.8/site-packages/PySide6/Qt/qml