Политика конфиденциальностиКонтактыО сайтеОтзывыGitHubDonate
© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
30 декабря 2018 г. 13: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) но не уверен может ли это мне помочь.

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

Виртуальный хостинг со скидкой 10 процентов
Виртуальный хостинг со скидкой 10 процентов
EVILEG предлагает надёжный хостинг со скидкой 10% на виртуальный хостинг и 5% на VPS
2

;-)

for (var i = 0; i < timerContainer.size; ++i)
{
    timerContainer.getTimer(i).visible = (i === idx);   
}
0
  • 30 декабря 2018 г. 20:49

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

0

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
N
23 марта 2019 г. 7:52
Nico03

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

  • Результат:80баллов,
  • Очки рейтинга4
Y
22 марта 2019 г. 9:39
Yavlados

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

  • Результат:21баллов,
  • Очки рейтинга-10
ЭА
22 марта 2019 г. 5:02
Эвелина Алексеева

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

  • Результат:53баллов,
  • Очки рейтинга-4
Последние комментарии
22 марта 2019 г. 12:32
Евгений Легоцкой

Ну может бибилотеки не те положили? У вас сборка для MinGW, а либы для MSVC.
ВН
22 марта 2019 г. 11:08
Волчонок Над-Пропастью

Из кьюта приложение не хочет запускаться, аварийно завершается, но каких-либо ошибок не выдаёт. Оно открывается, после нажатия "старт" зависает и завершается. Если не из кьюта запускать дебаг ...
21 марта 2019 г. 15:49
Евгений Легоцкой

серьезно? Эта ошибка 404 уже даже не относится к данному вопросу. В каких-то urls в вашем проекте. Вопросы, которые не относятся непосредственно к статье, задавайте, пожалуйста на...
АБ
21 марта 2019 г. 15:00
Артем Бел

а это где? сейчас ошибка в debag такая: Page not found (404)Request Method: GETRequest URL: http://amadowshop.site/accounts/profile/
21 марта 2019 г. 12:47
Евгений Легоцкой

не вижу здесь проблемы, поменяйте url для callback в приложения oauth в социальных сетях https://amadowshop.site/auth/verify/complete/facebook/
Сейчас обсуждают на форуме
m
22 марта 2019 г. 19:40
monevich

int main(int argc, char *argv[]){ QApplication a(argc, argv); MainWindow w; w.show(); if (argc==2) { w.openFile(argv[1]); } return a.exec();} Допустим...
22 марта 2019 г. 12:29
Дмитрий

Да, мьютекс добавил, но в том потоке, где сигнал вызывается.
ВН
22 марта 2019 г. 9:04
Волчонок Над-Пропастью

Да, на эту проблему! Зато у меня теперь новая, ругается на подключение QMediaPlayer, пишет, что не находит подобного файла или библиотеки. Пока не нашла как исправить, только вариант с переуст...
22 марта 2019 г. 8:58
Михаиллл

4) это , похоже, для создания видоизмененных страниц, для анимации. 3,5) добавить фвйл/qt/ui.qml
22 марта 2019 г. 8:04
Евгений Легоцкой

Привет. Если там std::vector , то наверное можно заранее подготовить вектор с необходимым количеством элементов и просто устанавливать значение по индексу элемента. Но в данном слу...
Присоединяйтесь к нам в социальных сетях

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы