查看: 4482|回复: 7

请问,怎样在Qt中使用OSG?OpenSceneGraph所提供的例子,我实在看不懂。

[复制链接]

该用户从未签到

发表于 2008-2-26 21:14:04 | 显示全部楼层 |阅读模式
Open Scene Graph 中的osgViewerQT里的例子是用整个窗口来显示模型,但在应用中肯定要有菜单栏啦、工具栏之类的。
我一开始想把OSG中的osgViewer类做成控件,因为太难,我放弃了。
我又想用QMainWindow中的setCentralWidget,但是我没办法像例子中提到的那样用 " osgViewer " 和 " QGLWidget " 派生一个新类,我该怎么办啊?
如果我能用"QGLWidget"和 " osgViewer " 派生一个新类,我就可以用用"QMainWindow"生成一个"SDI"框架窗口,再用"setCentralWidget"将OSG加入窗口了。
谢谢。

该用户从未签到

发表于 2008-2-26 22:47:21 | 显示全部楼层
不妨把osgviewerQT的例子这样改造一下:
  1. class MyWidget : public QWidget
  2. {
  3. public:
  4.         MyWidget(QWidget *parent = 0)
  5.         {
  6.                 setGeometry(100, 100, 800, 600);

  7.                 osg::ref_ptr<osg::Node> loadedModel = osgDB::readNodeFile("axes.osg");
  8.                 viewerWindow = new ViewerQT;
  9.                 viewerWindow->setCameraManipulator(new osgGA::TrackballManipulator);
  10.                 viewerWindow->setSceneData(loadedModel.get());

  11.                 QHBoxLayout *mainLayout = new QHBoxLayout;
  12.                 mainLayout->addWidget(viewerWindow);
  13.                 setLayout( mainLayout );
  14.         }

  15. protected:
  16.         ViewerQT* viewerWindow;
  17. };

  18. int mainAdapterWidget(QApplication& a, osg::ArgumentParser& arguments)
  19. {
  20.         MyWidget* widget = new MyWidget();
  21.         widget->show();
  22.    
  23.         a.connect( &a, SIGNAL(lastWindowClosed()), &a, SLOT(quit()) );
  24.         return a.exec();
  25. }
复制代码
也就是把viewerQT实例封到一个Layout里面,然后再向Layout追加别的控件:按钮、编辑框之类的就成了~~我用的QWidget,楼主用QMainWindow是一样的

该用户从未签到

 楼主| 发表于 2008-2-27 13:02:16 | 显示全部楼层
十分感谢,我可以把您的这个帖子贴到我的QQ空间里吗?

该用户从未签到

发表于 2008-2-27 13:11:41 | 显示全部楼层
原帖由 HelloWorld! 于 2008-2-27 13:02 发表
十分感谢,我可以把您的这个帖子贴到我的QQ空间里吗?


嗯,没问题。十分欢迎和感谢

该用户从未签到

发表于 2010-9-26 17:10:37 | 显示全部楼层
太好了 正想解决这个问题呢

该用户从未签到

发表于 2010-11-5 20:07:50 | 显示全部楼层
今天终于弄明白啦!这个例子还有没有别的解决方法 ???

该用户从未签到

发表于 2010-12-10 11:11:18 | 显示全部楼层
我最近也在弄这个,我装了QT-VS-Integration,想这样建立QtApplication工程后,就有*.ui,可以直接在这个界面中拖动控件来编辑界面和事件响应,很方便,但不知怎么能把Viewer加到QT界面中去,并且使按键等QT控件在视景器上面?

该用户从未签到

发表于 2011-2-12 22:09:11 | 显示全部楼层
UI设计器里面右键 promo to... 指定为你自己定义的类如 qtsogviewer即可
设计的时候随便用一个widget占位,完成ui设计后通过类提升将其绑定为你自己定义的类就行了
不知道这样行不行,反正我qt的界面都是这样子设计的。但是我osg一窍不通 ,刚编译完 。有一个失败几百个警告,所有例子都可以运行,打开例子工程也可以编译。正准备学习osg,盼以后多指教!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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