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;
}
重新編譯libcocos2d
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