QML FileDialog:未安装模块“Qt.labs.folderlistmodel”

问题描述 投票:0回答:2

我正在尝试在 QML 中添加

FileDialog
,我的环境:

  • Python 3.10.8
  • PyQt6
  • Arch Linux
  • 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 以查找是否有包含此文件夹列表模型的额外包,但我找不到任何包。

qt pyqt qml pyqt6 qt6.4.1
2个回答
0
投票

我在 Windows 上尝试过

FileDialog
,效果很好,这似乎是 Arch Linux 打包问题,但我不知道在哪里报告。 我已经使用了这个答案中提到的解决方法,使用
tkinter
并且它在两个操作系统上都运行良好。


0
投票

必须安装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
© www.soinside.com 2019 - 2024. All rights reserved.