Ubuntu SDK диалог открытия файла - proUbuntu
1 голос
/ 22 марта 2014

Я начал играть с SDK, чтобы начать разработку приложения.

Приложение будет тем, что позволит мне фильтровать записи в CSV-файле по поисковому запросу. Но существует ли файловый диалог, чтобы файл мог быть найден и как его использовать?

1 Ответ

1 голос
/ 23 марта 2014

В основном у вас есть два варианта, которые будут зависеть от версии Ubuntu, которую вы используете (или планируете использовать).

  • До 14.04 (версия Qt 5.0.x)

    Единственный способ открыть диалоговое окно файла - это использовать некоторый код C ++. Вам нужно будет предоставить метод, который является публичным слотом, для доступа к нему из вашего приложения QML.

    Перейдите по следующим ссылкам, чтобы начать шаблон:

    Тогда ваш публичный слот может вызвать следующую QFileDialog функцию: getOpenFileName ()

    QString GuiEngine::GetCSVFileName(void)
    {
        QString prompt = "Open File";
    
        return QFileDialog::getOpenFileName(NULL, \
                                            prompt, \
                                            "report.csv", \
                                            tr("CSV files (*.csv)"), \
                                            NULL, \
                                            QFileDialog::DontUseNativeDialog);
    }
    

    Примечание : он будет работать только с опцией QFileDialog :: DontUseNativeDialog поскольку собственный рендеринг создает диалоговое окно в дополнение к диалоговому окну файла (см. ошибка # 1214914 )

Откроется окно, подобное приведенному ниже:

enter image description here

  • 14.04 (Qt версия 5.2.1)

    В этом случае реализовать FileDialog гораздо проще, поскольку нет необходимости писать код на C ++.

    Вот минимальный пример, чтобы открыть диалоговое окно файла и выйти после того, как пользователь выберет файл:

    import QtQuick 2.1
    import QtQuick.Dialogs 1.0
    
    FileDialog {
        id: fileDialog
        title: "Please choose a file"
        onAccepted: {
            console.log("You chose: " + fileDialog.fileUrls)
            Qt.quit()
        }
        onRejected: {
            console.log("Canceled")
            Qt.quit()
        }
        Component.onCompleted: visible = true
    }
    
...