查看: 1474|回复: 4

遍历获取group的name遇到的问题

[复制链接]

该用户从未签到

发表于 2010-3-30 15:08:48 | 显示全部楼层 |阅读模式
本帖最后由 ccy_ccy2001 于 2010-3-30 15:42 编辑
  1. class OsgVisitor : public osg::NodeVisitor
  2. {
  3. public:
  4. OsgVisitor()sg::NodeVisitor(osg::NodeVisitor::TRAVERSE_ALL_CHILDREN)
  5. {

  6. }

  7. void apply(osg::Group& group)
  8. {
  9. setlocale(LC_ALL,"chs");
  10. std::string groupName;
  11. groupName = group.getName();
  12. QMessageBox msgBox;
  13. msgBox.setText(QString::fromStdString(groupName));
  14. msgBox.exec();
  15. traverse(group);
  16. }

  17. void apply(osg::Geode& geode)
  18. {
  19. std::string geodeName;
  20. geodeName = geode.getName();
  21. QMessageBox msgBox;
  22. msgBox.setText(QString::fromStdString(geodeName));
  23. msgBox.exec();
  24. traverse(geode);
  25. }
  26. };
复制代码
遍历group结点时候,就不能输出name值,而遍历到geode结点的时候,就可以输出。而且当我在std::string groupName设置断点时候,显示的std::string geodeName中geodeName的值是乱码,单步运行,std::string groupName执行完毕后,geodeName的值为空,执行到QMessageBox msgBox时,groupName值仍然为空,输出的结果也就为空。
请问是怎么回事啊?

该用户从未签到

发表于 2010-3-30 17:09:18 | 显示全部楼层
我想这和OSG没有什么关系,而是您的QString编码可能有问题,您不如用std::cout输出看一看是什么

该用户从未签到

 楼主| 发表于 2010-3-31 11:00:39 | 显示全部楼层
不好意思,是我在accept的时候有问题,本应该对node->accept(),我写成了root->addchild(node),root->accept().现在改过来,已经能输出name,但是如果name为中文时候,就会出现乱码,这又是什么原因啊?该怎么解决呢?谢谢~

该用户从未签到

发表于 2010-3-31 11:06:03 | 显示全部楼层
搜下论坛里中文路径的帖子

该用户从未签到

 楼主| 发表于 2010-3-31 11:11:47 | 显示全部楼层
我单步跟踪了,能显示出来中文了,估计就不是osg的问题了,谢谢大家!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表