gpt4 book ai didi

c++ - 获取级联 TouchEvent 的目标不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:30:19 25 4
gpt4 key购买 nike

我在尝试从 BB10 级联 API 获取触摸事件的目标时遇到问题。我有几个容器,一个在另一个下面,每个容器都分配了相同的 Touch 信号和插槽。一切都从 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,但它也没有用。请帮忙!

最佳答案

我会建议您使用我以前使用过的替代方法。您可以像这样设置控件的对象名称:

passiveRow->setObjectName("Hello_" + i");

QObject::connect(passiveRow, SIGNAL(touch(bb::cascades::TouchEvent*)), this,
SLOT(handleAccountTouch(bb::cascades::TouchEvent*)));

&在SLOT中使用它你可以知道哪个控件发出了信号:

if (event->touchType() == TouchType::Up) {
qDebug() << "object: " << QObject::sender()->objectName();
}

在这里,sender() 返回发出信号的控件。

关于c++ - 获取级联 TouchEvent 的目标不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13161796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com