Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt]Qml, встраивание и слоты


Автор: chaos 26.1.2010, 21:11
Доброго времени суток!
Начинаю переносить существующий back-end на новый front-end, в именно DeclarativeUI.

Описание проблемы:
Есть С++ объект - someObject у которого есть два слота(из qml не получается дергать за простые методы)один из них запускает таймер и по тайм ауту высылает сигнал.
Я хочу обработать этот сигнал из qml.
Код

class SomeObject : public QObject
{
Q_OBJECT
signals:
    void flagChanges();

public slots:
    void method()
    {
        startTimer((qrand() % 10) * 1000);
    }

protected:
    void timerEvent(QTimerEvent *event)
    {
        emit flagChanged();
        killTimer(event->timerId);
    }
}

int main(...)
{
    .....

    SomeObject someObject;

    QmlView view;
    view.rootContext()->setContextProperty("clt", &someObject);
    view.setUrl(QUrl("main.qml"));
    view.execute();
    view.show();

    ....
}


Код

import Qt 4.6

Item {
    id: mainView

    MouseRegion {
        anchors.fill: parent
        onClicked: clt.method()
    }

    //тут думаю как поймать сигнал
}


может есть люди которые уже разбирались с DeclarativeUI.

заранее благодарен!

Автор: chaos 26.1.2010, 21:35
Разобрался!
Код

Connection {
    sender: clt
    signal: "flagChanges()"
    script: console.log('flagChanged');
}



Автор: ysfox 17.1.2011, 18:33
Можеш подсказать куда именно в qml connection вставлять, ато никак не розберусь. просто таже проблема вчера возникла что и у тебя)
или сам код qml файла - был бы очень благодарен...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)