编写自己的QT 编辑器

首先你需要一个QT_32位版和QT_vs_plugin为了方便下载我都放在了我的百度网盘中

http://pan.baidu.com/s/1o6wsAuA

安装完成后可以在vs中看到QT5插件被安装好了


接下来我们按照平常的步骤创建的新的cocos工程取名为GameEditor,这时候我们在解决方案中右键添加新项目就可以添加一个QT项目取名为QTEditor

如下:


在这里把QTEditor设置为启动项目然后 视图->属性管理器


在QTEditor项目中右键添加现有属性表,将路径调整到cocos2d分别添加cocos2dx.propscocos2d_headers.props

我是参照这篇教程添加配置http://www.cnblogs.com/marisa/p/4141862.html

这里其实就是原来的启动项目GameEditor中的属性要依次添加到QTEditor中

修改属性如下








按照教程配置完成后就可以在QTEditor中使用cocos了

接下来在QTEditor的构造函数中添加

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你将看到如下结果


恭喜你基础的编辑器搭建完成了

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...