首先你需要一个QT_32位版和QT_vs_plugin为了方便下载我都放在了我的百度网盘中
http://pan.baidu.com/s/1o6wsAuA
安装完成后可以在vs中看到QT5插件被安装好了
接下来我们按照平常的步骤创建的新的cocos工程取名为GameEditor,这时候我们在解决方案中右键添加新项目就可以添加一个QT项目取名为QTEditor
如下:
在这里把QTEditor设置为启动项目然后 视图->属性管理器
在QTEditor项目中右键添加现有属性表,将路径调整到cocos2d分别添加cocos2dx.props和cocos2d_headers.props
我是参照这篇教程添加配置http://www.cnblogs.com/marisa/p/4141862.html
这里其实就是原来的启动项目GameEditor中的属性要依次添加到QTEditor中
按照教程配置完成后就可以在QTEditor中使用cocos了
Cocos的启动代码
如果这时候你成功看到cocos的程序恭喜你环境配置好了,
你需要在GLViewImpl的initWithRect中添加
glEnable(GL_VERTEX_PROGRAM_POINT_SIZE);
m_hwnd = glfwGetWin32Window(_mainWindow);
if (hParentWnd){
::SetParent(m_hwnd,hParentWnd);
//改变当前窗口的样式,去掉标题
SetWindowLong(m_hwnd,GWL_STYLE,GetWindowLong(m_hwnd,GWL_STYLE) & ~WS_CAPTION);
//设置位置
::SetWindowPos(m_hwnd,HWND_TOP,rect.origin.x,rect.origin.y,rect.size.width,rect.size.height,SWP_NOCOPYBITS);
}
在AppDelegate中添加
void AppDelegate::setParent(HWND hwnd,RECT rect)
{
m_ParentHwnd = hwnd;
m_ParentRect.left = rect.left;
m_ParentRect.top = rect.top;
m_ParentRect.right = rect.right;
m_ParentRect.bottom = rect.bottom;
}
接下来我们需要用到CCQApplication这个类我们让AppDelegate继承于CCQApplication
AppDelegate(int argc,char *argv[]) : cocos2d::CCQApplication(argc,argv) {
m_ParentHwnd = NULL;
m_ParentRect.left = 0;
m_ParentRect.bottom = 640;
m_ParentRect.right = 960;
m_ParentRect.top = 0;
};
使用QT设计师打开项目的qteditor.ui文件
我们需要在界面中添加三个DockWidget一个是放cocos的SceneWidget一个查看属性的AttributeWidget一个查看输出的LoWidget
但是你会发现控件无法被拖动,取消属性中的docked
这时候控件就可以按照我们的要求摆放了
将CCQApplication的timeupdate修改如下
void CCQApplication::timerUpdate()
{
Director::getInstance()->mainLoop();
//CCQGLView::getInstance()->updateWindowSize();
}
然后将main修改为如下
AppDelegate app(argc,argv);
QTEditor w;
w.show();
RECT t;
QRect qr = ((QWidget*)(w.getUI().SceneWidget->children().at(4)))->rect();
//这里要注意WidgetContent的下标是4
t.left = qr.left();
t.right = qr.right();
t.top = qr.top();
t.bottom = qr.bottom();
qDebug("%d %d %d %d",qr.left(),qr.right(),qr.bottom(),qr.top());
//一个一个地查找出来的
app.setParent((HWND)((QWidget*)(w.getUI().SceneWidget->children().at(4)))->winId(),t);
return cocos2d::CCQApplication::getInstance()->run();
这里的w.getUI().SceneWidget->children().at(4)是获取到SceneWidget的子对象SceneWidgetContent这样我们才能让cocos的渲染界面显示在正确的位置
Ok你将看到如下结果
恭喜你基础的编辑器搭建完成了