这个问题涉及Qt,但我的逻辑可能是纯C++问题。
我正在将QQuickItem
s 添加到有关s 及其各自父母std::map
列表的商店信息中。QQuickItem
编码:
std::array<std::string, 2> ObjectNamesArray = { "quickitemObj1", "quickitemObj2" };
std::map<QQuickItem*, QQuickItem*> items;
for(const auto& quickitem: ObjectNamesArray) {
QQuickItem * item = Qmlengine->rootObjects()[0]->findChild<QQuickItem*>(quickitem.c_str());
if (item != NULL)
items.insert(std::make_pair(item, item->parent());
// for a test, following works fine with the item pointer within this loop
qreal width ? item->width();
}
通过上面的循环进行调试,items
地图显示零个带有标签的项目not access。
像这样再次遍历地图。
std::map<QQuickItem*, QQuickItem*>::iterator it = items.begin();
while (it != items.end()) {
QQuickItem* item = it->first;
QQuickItem * itemParent = it->second; // crashes here as *item is null
it++;
}
问题:
但是,当我尝试遍历地图时,没有指向我QQuickItem
的 s 的有效指针。事实上,地图中似乎没有添加任何项目。
问题:
我的逻辑有什么问题?我应该如何将QQuickItem
s 添加到 std::map 以便我可以安全地检索它们。