BlinCT
BlinCT05 травня 2016 р. 17:25

Вынести обьект QML в отдельный файл

тип, qml, Qt, отдельный файл

Всем привет.
Подскажите, пожалуйста. Вот, например, описываем какой-то объект и набирается очень много строк. А кроме него еще куча, и надо как-то разделить.
Например в крестах просто nameclass; и все, оттуда мы получаем всё, что вынести, а вот как с QML? Я так понимаю что это не import как в случае класса из крестов передавать в QML слой.
например

Rectangle
    {
        id: menuRect
        anchors.top: parent.top
        anchors.left: parent.left
        anchors.right: parent.right
        height: dp(40)
        color: "#4cd964"
 
        // Иконка-Гамбургер
        Rectangle
        {
            anchors.top: parent.top
            anchors.bottom: parent.bottom
            anchors.left: parent.left
 
            width: dp(48)
            color: "#4cd964"
 
            Rectangle
            {
                anchors.top: parent.top
                anchors.topMargin: dp(16)
                anchors.left: parent.left
                anchors.leftMargin: dp(14)
                width: dp(20)
                height: dp(2)
            }
 
            Rectangle
            {
                anchors.top: parent.top
                anchors.topMargin: dp(23)
                anchors.left: parent.left
                anchors.leftMargin: dp(14)
                width: dp(20)
                height: dp(2)
            }
 
            Rectangle
            {
                anchors.top: parent.top
                anchors.topMargin: dp(30)
                anchors.left: parent.left
                anchors.leftMargin: dp(14)
                width: dp(20)
                height: dp(2)
            }
 
            MouseArea
            {
                anchors.fill: parent
 
                onClicked:
                {
                    
                }
            }
        }
}

 

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.

Вам це подобається? Поділіться в соціальних мережах!

10
Evgenii Legotckoi
  • 05 травня 2016 р. 23:11

Нужно создать отдельный QML файл, название которого будет начинаться с заглавной буквы (обязательно с заглавной), тогда в QML это будет считаться типом. Всё, что относится к иконке, вынести в этот файл. Допустим, он будет называться Burger.qml
После этого в файле main.qml добавить иконку следующим образом:

ApplicationWindow {
    id: application
    visible: true
    width: 640
    height: 480
 
    Burger {
        id: burger
        onMenuClicked: {
            // do something
        }
   }
}

 

    BlinCT
    • 07 травня 2016 р. 15:44

    Нужно создать отдельный QML файл

    Но, например, у обьекта прямоугольник с 4 по 6 строчки заданное местоположение или якоря.
    Получается, что мы создаем обьект типа “название файла”.qml и тут задаем якоря? Не в самом файле?
    Так как у меня именно так получается? Или есть какой то более правильный способ?

      BlinCT
      • 07 травня 2016 р. 16:45
      Еще странно, что я в проект добавил файл qml, который находится в другом каталоге, и назвал правильно с заглавной буквы.
      Но почему то main.qml не видит его. То есть, пишу название, а редактор подписывает что это неизвестный элемент.
        Evgenii Legotckoi
        • 08 травня 2016 р. 05:31

        Получается, что мы создаем обьект типа «название файла».qml и тут задаем якоря?

        В файле будет основное содержимое и якоря, относящиеся только к внутреннему расположению дочерних элементов данного объекта. Расположение объекта в main.qml нужно задавать якорями уже в самом файле main.qml.

        ApplicationWindow {
            id: application
            visible: true
            width: 640
            height: 480
         
            Burger {
                id: burger
                anchors.top: parent.top
                anchors.left: parent.left
                anchors.right: parent.right
                anchors.bottom: parent.bottom
                onMenuClicked: {
                    // do something
                }
           }
        }

        Еще странно, что я в проект добавил файл qml, который находится в другом каталоге, и назвал правильно с заглавной буквы.

        А вот здесь уже рекомендую внимательно разобраться с путями к файлу. Особенно это касается QML файлов. Они же добавляются, как файлы ресурсов, и добавлять их нужно в qml.qrc. Так что их лучше расположить там же, где и main.qml находится. В целом странного в этом ничего нет, просто не совсем корректно был файл добавлен. Лучше попробовать создать для начала новый пустой файл в проекте и поработать с ним. А потом уже добавлять заполненный файл.

          BlinCT
          • 08 травня 2016 р. 06:30

          и добавлять их нужно в qml.qrc

          Да, я этот момент уже заметил. Но добавил пути туда в другой каталог как положено.
          Но вот и странно что создаю объект такого класса но он его не видит(
          Наверное я где то чет упустил.

            BlinCT
            • 08 травня 2016 р. 06:53

            и добавлять их нужно в qml.qrc

            То есть например в каталоге Content есть файл file.qml
            И в qml.qrc указан путь Content/file.qml
            Вроде как все правильно.

              Evgenii Legotckoi
              • 08 травня 2016 р. 07:42

              И в qml.qrc указан путь Content/file.qml

              Префиксы к файлам прописаны? или префикс просто “/”.
              Смотреть нужно, что там с префиксами и алиасами. Если префикс “/”, то может и без алиаса быть указано.
              Как вариант, создать тогда файл с нужным названием и потом копировать туда содержимое. Чтобы разобраться, какой момент упущен.

                BlinCT
                • 08 травня 2016 р. 09:20

                Префиксы к файлам прописаны? или префикс просто «/».

                Да, префик в qml.qrc указан “/”.
                Прикрепил скрин маленький. Вроде все как и должно быть.

                  iG
                  • 08 травня 2016 р. 09:49
                  • Відповідь була позначена як рішення.
                  import QtQuick 2.6
                  import QtQuick.Window 2.2
                  import "Content"
                  Window {
                      visible: true
                      CircleTimerContent{
                   
                      }
                  }

                   

                    BlinCT
                    • 08 травня 2016 р. 10:01

                    import “Content”

                    Вот где была моя ошибка, нужно импортировать каталог с контентом.
                    Спасибо.

                      Коментарі

                      Only authorized users can post comments.
                      Please, Log in or Sign up
                      AD

                      C++ - Тест 004. Указатели, Массивы и Циклы

                      • Результат:50бали,
                      • Рейтинг балів-4
                      m
                      • molni99
                      • 26 жовтня 2024 р. 01:37

                      C++ - Тест 004. Указатели, Массивы и Циклы

                      • Результат:80бали,
                      • Рейтинг балів4
                      m
                      • molni99
                      • 26 жовтня 2024 р. 01:29

                      C++ - Тест 004. Указатели, Массивы и Циклы

                      • Результат:20бали,
                      • Рейтинг балів-10
                      Останні коментарі
                      ИМ
                      Игорь Максимов22 листопада 2024 р. 11:51
                      Django - Підручник 017. Налаштуйте сторінку входу до Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
                      Evgenii Legotckoi
                      Evgenii Legotckoi31 жовтня 2024 р. 14:37
                      Django - Урок 064. Як написати розширення для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
                      A
                      ALO1ZE19 жовтня 2024 р. 08:19
                      Читалка файлів fb3 на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
                      ИМ
                      Игорь Максимов05 жовтня 2024 р. 07:51
                      Django - Урок 064. Як написати розширення для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
                      d
                      dblas505 липня 2024 р. 11:02
                      QML - Урок 016. База даних SQLite та робота з нею в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                      Тепер обговоріть на форумі
                      Evgenii Legotckoi
                      Evgenii Legotckoi24 червня 2024 р. 15:11
                      добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
                      t
                      tonypeachey115 листопада 2024 р. 06:04
                      google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
                      NSProject
                      NSProject04 червня 2022 р. 03:49
                      Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
                      9
                      9Anonim25 жовтня 2024 р. 09:10
                      Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

                      Слідкуйте за нами в соціальних мережах