BlinCT
BlinCT5 мая 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
  • 5 мая 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
    • 7 мая 2016 г. 15:44

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

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

      BlinCT
      • 7 мая 2016 г. 16:45
      Еще странно, что я в проект добавил файл qml, который находится в другом каталоге, и назвал правильно с заглавной буквы.
      Но почему то main.qml не видит его. То есть, пишу название, а редактор подписывает что это неизвестный элемент.
        Evgenii Legotckoi
        • 8 мая 2016 г. 5: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
          • 8 мая 2016 г. 6:30

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

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

            BlinCT
            • 8 мая 2016 г. 6:53

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

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

              Evgenii Legotckoi
              • 8 мая 2016 г. 7:42

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

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

                BlinCT
                • 8 мая 2016 г. 9:20

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

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

                  iG
                  • 8 мая 2016 г. 9:49
                  • Ответ был помечен как решение.
                  import QtQuick 2.6
                  import QtQuick.Window 2.2
                  import "Content"
                  Window {
                      visible: true
                      CircleTimerContent{
                   
                      }
                  }

                   

                    BlinCT
                    • 8 мая 2016 г. 10:01

                    import “Content”

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

                      Комментарии

                      Только авторизованные пользователи могут публиковать комментарии.
                      Пожалуйста, авторизуйтесь или зарегистрируйтесь
                      d
                      • dsfs
                      • 26 апреля 2024 г. 11:56

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

                      • Результат:80баллов,
                      • Очки рейтинга4
                      d
                      • dsfs
                      • 26 апреля 2024 г. 11:45

                      C++ - Тест 002. Константы

                      • Результат:50баллов,
                      • Очки рейтинга-4
                      d
                      • dsfs
                      • 26 апреля 2024 г. 11:35

                      C++ - Тест 001. Первая программа и типы данных

                      • Результат:73баллов,
                      • Очки рейтинга1
                      Последние комментарии
                      k
                      kmssr9 февраля 2024 г. 2:43
                      Qt Linux - Урок 001. Автозапуск Qt приложения под Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
                      АК
                      Анатолий Кононенко5 февраля 2024 г. 9:50
                      Qt WinAPI - Урок 007. Работаем с ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
                      EVA
                      EVA25 декабря 2023 г. 18:30
                      Boost - статическая линковка в CMake проекте под Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
                      J
                      JonnyJo25 декабря 2023 г. 16:38
                      Boost - статическая линковка в CMake проекте под Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
                      G
                      Gvozdik19 декабря 2023 г. 5:01
                      Qt/C++ - Урок 056. Подключение библиотеки Boost в Qt для компиляторов MinGW и MSVC Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
                      Сейчас обсуждают на форуме
                      PS
                      Peter Son4 мая 2024 г. 0:57
                      Best Indian Food Restaurant In Cincinnati OH Ready to embark on a gastronomic journey like no other? Join us at App india restaurant and discover why we're renowned as the Best Indian Food Restaurant In Cincinnati OH . Whether y…
                      Evgenii Legotckoi
                      Evgenii Legotckoi2 мая 2024 г. 21:07
                      Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Добрый день. По моему мнению - да, но то, что будет касаться вызовов к функционалу Андроида, может создать огромные трудности.
                      IscanderChe
                      IscanderChe30 апреля 2024 г. 11:22
                      Во Flask рендер шаблона не передаётся в браузер Доброе утро! Имеется вот такой шаблон: <!doctype html><html> <head> <title>{{ title }}</title> <link rel="stylesheet" href="{{ url_…
                      G
                      Gar22 апреля 2024 г. 12:46
                      Clipboard Как скопировать окно целиком в clipb?
                      Павел Дорофеев
                      Павел Дорофеев14 апреля 2024 г. 9:35
                      QTableWidget с 2 заголовками Вот тут есть кастомный QTableView с многорядностью проект поддерживается, обращайтесь

                      Следите за нами в социальных сетях