BlinCT
BlinCT6 мая 2016 г. 3: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
  • 6 мая 2016 г. 9:11

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

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

 

    BlinCT
    • 8 мая 2016 г. 1:44

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                   

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

                    import “Content”

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

                      Комментарии

                      Только авторизованные пользователи могут публиковать комментарии.
                      Пожалуйста, авторизуйтесь или зарегистрируйтесь
                      Ua

                      Qt - Тест 001. Сигналы и слоты

                      • Результат:84баллов,
                      • Очки рейтинга4
                      Ua

                      Qt - Тест 001. Сигналы и слоты

                      • Результат:42баллов,
                      • Очки рейтинга-8
                      ОК

                      Qt - Тест 001. Сигналы и слоты

                      • Результат:47баллов,
                      • Очки рейтинга-6
                      Последние комментарии
                      ИМ
                      Игорь Максимов22 ноября 2024 г. 21:51
                      Django - Урок 017. Кастомизированная страница авторизации на Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
                      Evgenii Legotckoi
                      Evgenii Legotckoi31 октября 2024 г. 23:37
                      Django - Урок 064. Как написать расширение для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
                      A
                      ALO1ZE19 октября 2024 г. 17:19
                      Читалка fb3-файлов на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
                      ИМ
                      Игорь Максимов5 октября 2024 г. 16:51
                      Django - Урок 064. Как написать расширение для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
                      d
                      dblas55 июля 2024 г. 20:02
                      QML - Урок 016. База данных SQLite и работа с ней в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                      Сейчас обсуждают на форуме
                      f
                      firstlunoxod15 февраля 2025 г. 13:46
                      Рисование на QGraphicsScene при зажатой кнопке мыши Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
                      Дмитрий
                      Дмитрий3 февраля 2025 г. 16:24
                      Создание deb-пакета. Как создать ярлык на рабочем столе после установки собственного deb-пакета? Всем привет. Сделал свой deb-пакет с программой. Всё устанавливается и работает. Ставлю по пути /usr/bin/my_application. Как для пользователя при установке пакета сразу создать ярлык на раб…
                      NW
                      Nayo Wai30 января 2025 г. 19:22
                      не запускается компьютер!!! Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
                      n
                      nkly3 января 2025 г. 12:52
                      Нужно запретить перемещение только некоторых итемов, остальные перемещать можно. Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
                      M
                      Marsel17 августа 2023 г. 0:26
                      OAuth2.0 через VK, получение email Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.

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