我在尝试从 BB10 级联 API 达到触摸事件的目标时遇到问题。我有几个容器,一个在另一个下面,每个容器都分配了相同的触摸信号和插槽。一切都是从 C++ 动态加载的。所以,为了捕捉每个触摸事件,我需要知道哪个容器触发了该事件。我读过我只需要使用 TouchEvent 中的 TARGET 属性,但它不起作用,我不知道为什么。所以我在寻求帮助
这是我的代码:
for (int i = 0; i < 10; i++) {
QmlDocument *qml = QmlDocument::create("asset:///customComponents/TableRow.qml").parent(this);
Container *passivesRow = qml->createRootObject<Container>();
passivesRow->setProperty("labelTextOne", "Hello_" + i);
bool res = QObject::connect(passivesRow,
SIGNAL(touch(bb::cascades::TouchEvent*)), this,
SLOT(handleAccountTouch(bb::cascades::TouchEvent*)));
Q_ASSERT(res);
Q_UNUSED(res);
myCurrentPageContainer->add(passivesScroll);
}
void PosicionConsolidada::handleAccountTouch(bb::cascades::TouchEvent* event) {
if (event->touchType() == TouchType::Up) {
qDebug() << "event catched";
VisualNode *p = event->target();
qDebug() << "object p: " << p->property("labelTextOne"); //Print nothing
}
}
其他一切工作正常。我的容器列表正在使用它们各自的文本创建得很好。当我单击其中一个时,事件被成功捕获。我还尝试将 VisualNode 对象强制转换为 Container,但它也不起作用。请帮忙!。