BlinCT
BlinCTЖел. 30, 2018, 8:22 Т.Ж.

Динамическое создание обьекта и добавление в StackView QML

qml, c++

Всем привет.
Столкнулся с такой проблемой, на стороне С++ я создаю динамически обьект, его получаю на стороне QML и нужно его добавить в StackView.
И как это сделать не могу придумать. Ниже кидаю крестовую часть и QML

TimerContainer::TimerContainer(QObject *parent)
        : QObject(parent)
{
    vec_ = new vector<CircleTimer*>();
    createTimer();
}

CircleTimer *TimerContainer::getTimer(int index)
{
    return vec_->at(index);
}

void TimerContainer::delTimer(int index)
{
    vec_->erase(vec_->begin() + index);
    emit sizeChanged(vec_->size());
}

void TimerContainer::createTimer()
{
    auto timer = new CircleTimer();
    vec_->push_back(timer);
    emit sizeChanged(vec_->size());
    emit addNewTimer(timer);
}

void TimerContainer::createTimers(int number)
{
    if (number != 0)
    {
        while (number != 0)
        {
            createTimer();
            --number;
        }
    }
}

int TimerContainer::size()
{
    return vec_->size();
}

QML

StackView
{
    id: timers

    property var currentTimer: QtObject
    property int currentIndex: -1
    property int targetId: 0

    function selectTimer(idx)
    {
        for (var i = 0; i < timerContainer.size; ++i)
        {
            //timerContainer.getTimer(idx).visible = (i === idx);
            //console.log("idx: " + i + " - " + timerContainer.getTimer(idx).visible)
        }
        currentTimer = timerContainer.getTimer(idx);
        currentIndex = idx;
    }

    //function addTimer(timer) {
    //    timer.parent = circletimercontent1;
    //    timer.anchors.fill = circletimercontent1;
    //}

    Component.onCompleted: {
        for (var i = 0; i < timerContainer.size; ++i)
        {
            timers.push(timerContainer.getTimer(i));
        }

        timers.selectTimer(0);
        timerContainer.addNewTimer.connect(timers.addTimer);

    }

    Connections
    {
        target: currentTimer
    }
}

Наткнулся где то на форумах на
var newComponent = Qt.createComponent(arg)
var newObj = newComponent.createObject(arg)
но не уверен может ли это мне помочь.

Буду признателен если тот кто с чем то подобным сталкивался поможет разобратся в этом.

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

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

2
Evgenii Legotckoi
  • Жел. 30, 2018, 2:58 Т.Қ.
  • Жауап шешім ретінде белгіленді.

;-)

for (var i = 0; i < timerContainer.size; ++i)
{
    timerContainer.getTimer(i).visible = (i === idx);   
}
    BlinCT
    • Жел. 30, 2018, 3:49 Т.Қ.

    Да, ошибочка на внимательность)

      Пікірлер

      Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
      Кіріңіз немесе Тіркеліңіз
      OI
      • Ora Iro
      • Жел. 24, 2024, 6:38 Т.Ж.

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

      • Нәтиже:40ұпай,
      • Бағалау ұпайлары-8
      AD

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

      • Нәтиже:50ұпай,
      • Бағалау ұпайлары-4
      m
      • molni99
      • Қаз. 26, 2024, 1:37 Т.Ж.

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

      • Нәтиже:80ұпай,
      • Бағалау ұпайлары4
      Соңғы пікірлер
      ИМ
      Игорь МаксимовҚар. 22, 2024, 11:51 Т.Ж.
      Django - Оқулық 017. Теңшелген Django кіру беті Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
      Evgenii Legotckoi
      Evgenii LegotckoiҚаз. 31, 2024, 2:37 Т.Қ.
      Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
      A
      ALO1ZEҚаз. 19, 2024, 8:19 Т.Ж.
      Qt Creator көмегімен fb3 файл оқу құралы Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
      ИМ
      Игорь МаксимовҚаз. 5, 2024, 7:51 Т.Ж.
      Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
      d
      dblas5Шілде 5, 2024, 11:02 Т.Ж.
      QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
      Енді форумда талқылаңыз
      n
      nklyҚаң. 3, 2025, 2:52 Т.Ж.
      Нужно запретить перемещение только некоторых итемов, остальные перемещать можно. Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
      AW
      Ayden WatkinsҚаң. 2, 2025, 12:09 Т.Ж.
      Why Paying for a Research Paper Can Be a Smart Choice Writing a research paper can be a daunting task, especially when faced with tight deadlines, complex topics, or a lack of resources. For many students, paying for a research paper is a practical…
      p
      pimacontrols85Жел. 31, 2024, 9:39 Т.Ж.
      Finding the Right Rittal Small Enclosure for Your Needs Rittal is a leading manufacturer of enclosures for industrial and IT applications. Their small enclosures offer a compact and reliable solution for a wide range of needs, from housing electronic…
      Donald Randolph
      Donald RandolphЖел. 30, 2024, 2:59 Т.Ж.
      Personal Injury lawyer Santa Monica As an experienced Santa Monica personal injury lawyer, Donald C. Randolph has recovered over $100 Million in verdicts and settlements for our clients. In severe injury cases, this compensation i…
      Nirvana Yoga School
      Nirvana Yoga SchoolЖел. 30, 2024, 5:13 Т.Ж.
      OAuth2.0 через VK, получение email Nirvana Yoga School is one of the most trusted and reputed traditional Rishikesh yoga courses , India certified by Yoga Alliance, USA. We aim to spread traditional yoga teachings so t…

      Бізді әлеуметтік желілерде бақылаңыз