Команда (фрилансеры)

Набираем команду фрилансеров, Вы:

  • Программист,
  • Дизайнер,
  • SEO-специалист,
  • Менеджер

Разработка на заказ

Наша команда фрилансеров выполнит
работы на заказ:

Создание и раскрутка сайтов
Разработка приложений (мобайл, десктоп, сервер)
Разработка игр (веб, мобайл, 3D)
Аутсорсинг, фриланс

Контакты
vk.com/sitev_ru
Skype: sitev.ru
E-mail: mike@sitev.ru
github.com/sitev

Рейтинг@Mail.ru

Besucherzahler
счетчик посещений
Сайт на C++
Наш сайт работает на C++ и это очень круто! =))

QML FileDialog. Урок 5

На этом уроке мы будем изучать QML-кий FileDialog. В официальной документации, так про него и написано: "Dialog component for choosing files from a local filesystem".

Для изучения, возьмём какой-нибудь примерчик. Например, мы так давно разместили статью о конфигураторе проектов. Вот один из экранов этого приложения:

Для указания пути к исходнику (Path to Source) мы будем не только использовать поле для ввода, но и QML-тип FileDialog, для визуального выбора пути.

Создаём проект "Приложение Qt Quick" (всё по-умолчанию). Создадим MainForm с нуля, добавив Text, TextField, Button и красиво расположив их на экране:

Тамже, в MainForm создадим FileDialog. У этого диалога есть свойство selectFolder, если мы его поставим в true, то FileDialog будет искать не файл, а папку.

Некоторые элементы, которые будут "смотреть наружу", необходимо задать в виде свойств property.

Дизайн приложения, а точнее, форма MainForm готова:

import QtQuick 2.6
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.0
import QtQuick.Dialogs 1.0

Rectangle {
    property alias txfPath: txfPath
    property alias btnSelect: btnSelect
    property alias fileDialog: fileDialog

    width: 360
    height: 360

    Text {
        id: text1
        text: qsTr("Path to Source:")
        anchors.left: parent.left
        anchors.top: parent.top
        anchors.leftMargin: 20
        anchors.topMargin: 20
        verticalAlignment: Text.AlignVCenter
        height: 30
    }

    TextField {
        id: txfPath
        anchors.left: text1.right
        anchors.leftMargin: 20
        anchors.top: parent.top
        anchors.topMargin: 20
        anchors.right: btnSelect.left
        anchors.rightMargin: 20
        placeholderText: qsTr("Text Field")
        height: 30
    }

    Button {
        id: btnSelect
        anchors.right: parent.right
        anchors.top: parent.top
        anchors.rightMargin: 20
        anchors.topMargin: 20
        text: qsTr("...")
        width: 40
        height: 30
    }

    FileDialog {
        id: fileDialog
        title: "Please choose a Path to Source"
        folder: shortcuts.home
        selectFolder: true
    }
}

Обработку событий вынесем в файл main.qml:

import QtQuick 2.6
import QtQuick.Window 2.2
import QtQuick.Dialogs 1.0

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    MainForm {
        anchors.fill: parent

        btnSelect.onClicked: {
            fileDialog.open();
        }

        fileDialog.onAccepted: {
            console.log("Accepted: " + fileDialog.fileUrls);
            for (var i = 0; i < fileDialog.fileUrls.length; ++i)
                txfPath.text = fileDialog.fileUrls[i];
        }
    }
}

Как мы видим из исходника, написанного на Javascript от Qt, мы обрабатываем два события: btnSelect.onClicked и fileDialog.onAccepted. По первому событию мы открываем диалог, а по второму, если директория была выбрана, мы копируем эту директорию в поле ввода.

Урок выложен на Гитхабе

FileDialog - достаточно простой и удобный компонент имеет несколько свойств и методов, более подробно с которыми можно познакомиться почитав официальную документацию.


Отправить комментарий
Наш проект: язык Cj
Cj - язык программирования (C++ & Javascript)
Новый язык программирования, для разработки веб, мобайл, десктоп-приложений, игр... подробнее...

Хотите поддержать проект?

  • Оставляйте ссылки на наш сайт
  • Станьте спонсором проекта
подробнее...

Концепция SITEV.ru

SITEV.ru - это социальная сеть для ИТ-специалистов (программистов, дизайнеров, seo-специалистов, рекламных менеджеров, маркетологов), в том числе фрилансеров, бизнесменов... а также обычных пользователей, для которых и делается ИТ

Реклама


Поиск работы по всему миру