QML FileDialog проблема

Я пытаюсь использовать компонент FileDialog в QML.

Я сделал точно такой же код, что и в документации Qt по ссылке http://doc.qt.io/qt-5/qml-qtquick-dialogs-filedialog.html, и он не отображает диалоговое окно и возвращает ошибку: 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
        }
    }
}

person GuiDupas    schedule 18.11.2015    source источник
comment
Код, который вы опубликовали, у меня работает нормально. диалоговое окно файла отображалось должным образом. вы пробовали изменить папку на строку типа folder: "/home/user/Documents"?   -  person ramtheconqueror    schedule 18.11.2015
comment
Небольшое примечание: свойство visible FileDialog по умолчанию имеет значение false, поэтому нет необходимости явно устанавливать его false. Лучший способ показать это - просто вызвать yourFileDialog.open (), например, в данном случае в Component.onCompleted.   -  person kuipersn    schedule 14.03.2017


Ответы (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;
    }
}
person GuiDupas    schedule 18.11.2015