cocos2dx\platform\qt\CCEGLView_qt.cpp
bool CCEGLView::Create(int iWidth, int iHeight)
中包含了是如何利用QGLWidget 来创建一个窗体的。
或者是先创建号GLWidget, 然后通过
bool CCEGLView::SetWindow(GLWidget* window)
来制定窗口。
增加QWidget 来导出控件.
cocos2dx\platform\qt\CCEGLView_qt.h:
public:
QWidget *widget;
cocos2dx\platform\qt\CCEGLView_qt.cpp:
bool CCEGLView::Create(int iWidth, int iHeight)
{
widget = new QWidget;
widget->setAttribute(Qt::WA_PaintOnScreen);
widget->setFixedSize(iWidth, iHeight);
m_window = new GLWidget(iWidth,iHeight, CCDirector::sharedDirector(), widget);
m_window->setMouseMoveFunc(&cocos2d::mouseMove);
m_window->setMousePressFunc(&cocos2d::mousePress);
m_window->setMouseReleaseFunc(&cocos2d::mouseRelease);
m_window->setWindowFlags(m_window->windowFlags()& ~Qt::WindowMaximizeButtonHint);
m_window->setFixedSize(iWidth, iHeight);
widget->show();
m_bIsSubWindow = true;
bIsInit = true;
s_pMainWindow = this;
m_sSizeInPoint.width = iWidth;
m_sSizeInPoint.height = iHeight;
m_bOrientationInitVertical = (CCDeviceOrientationPortrait == m_eInitOrientation
|| kCCDeviceOrientationPortraitUpsideDown == m_eInitOrientation) ? true : false;
return true;
}
HelloWorld
修改 AppDelegate.cpp
bool AppDelegate::initInstance()
#if (CC_TARGET_PLATFORM == CC_PLATFORM_QT)
CCEGLView * pMainWnd = new CCEGLView();
CC_BREAK_IF(! pMainWnd|| ! pMainWnd->Create(480, 320));
// 添加, 这个widget还不能向外保留接口,比如把window 声明为public 变量,从外部访问它。具体原因还不知道
QWidget *window = new QWidget();
window->setAttribute(Qt::WA_DeleteOnClose);
QHBoxLayout *layout = new QHBoxLayout(window);
layout->addWidget(pMainWnd->widget);
window->show();
#endif