QML FileDialog 问题

Posted

技术标签:

【中文标题】QML FileDialog 问题【英文标题】:QML FileDialog issue 【发布时间】:2015-11-18 13:31:51 【问题描述】:

我正在尝试在 QML 中使用 FileDialog 组件。

我已经完成了与链接http://doc.qt.io/qt-5/qml-qtquick-dialogs-filedialog.html 中 Qt 文档中完全相同的代码,但它没有显示对话框并返回错误:QFileInfo::absolutePath: Constructed with empty filename。我试着写一个简单的代码来测试它,返回的是同样的错误。我的代码如下。

import QtQuick 2.4
import QtQuick.Window 2.2
import QtQuick.Controls 1.3
import QtQuick.Dialogs 1.2

Window 
    visible: true

    width: 360
    height: 640

    maximumHeight: 640
    minimumHeight: 640

    maximumWidth: 360
    minimumWidth: 360

    title: "Acessar Galeria Test"

    Rectangle 
        id: principal

        anchors.fill: parent

        FileDialog 
            id: fileDialog

            title: "Please choose a file"

            folder: shortcuts.home

            visible: true
        
    

【问题讨论】:

您发布的代码对我来说工作正常。文件对话框确实按预期显示。您是否尝试过将文件夹更改为类似folder: "/home/user/Documents" 的字符串? 请注意:FileDialog 的 visible 属性默认为 false,因此无需显式设置为 false。显示它的“更好”方式是简单地调用 yourFileDialog.open(),例如,在本例中为 Component.onCompleted。 【参考方案1】:

回答我自己的问题:

FileDialog visible property 在组件不完整时不能为真。所以代码必须如下:

import QtQuick 2.4
import QtQuick.Window 2.2
import QtQuick.Controls 1.3
import QtQuick.Dialogs 1.2

Window 
    visible: true

    width: 360
    height: 640

    maximumHeight: 640
    minimumHeight: 640

    maximumWidth: 360
    minimumWidth: 360

    title: "Acessar Galeria Test"

    Rectangle 
        id: principal

        anchors.fill: parent

        FileDialog 
            id: fileDialog

            title: "Please choose a file"

            folder: shortcuts.home

            visible: false
        
    

    Component.onCompleted: 
        fileDialog.visible = true;
    

【讨论】:

以上是关于QML FileDialog 问题的主要内容,如果未能解决你的问题,请参考以下文章

Qml中的FileDialog在Release中不起作用

QML 文件对话框(选择文件夹)

QML:在 GridView 中加载图像

如何从 PySide 访问 QML\QtQuick 控件?

23.Quick QML-简单且好看的图片浏览器-支持多个图片浏览缩放旋转滑轮切换图片

存储文件 URL