Unity程序嵌入Qt后点击UI按钮Button没有反应

一、前言

在一次项目中,需要将Unity程序嵌入qt中,并在主界面显示,根据网络资料与相关代码,成功将unity程序嵌入,但是在点击Unity的Button按钮时却没有响应,在查找相关资料后,解决问题,在此记录。

二、问题原因

在单独运行unity的exe程序,button按钮能够正常触发,根据相关资料,发现问题可能是出现在unity程序嵌入qt窗口时,鼠标事件传递关系出现问题,猜测可能是嵌入时需要进行某些设置,之后尝试其他嵌入方式后,成功解决问题。

三、相关代码

cpp 复制代码
void ShowUnityWindowsInQt::setWindowParent(HWND parentWidgetHandle, const QString& sonWindowTitleName,QWidget* parent)
{
    HWND hfigure;
    while (true)
    {
        hfigure = FindWindow(NULL ,(LPCWSTR)(sonWindowTitleName.unicode()));
        if (hfigure != NULL)
        {
            break;
        }
    }
	::SetParent(hfigure, parentWidgetHandle);

	LONG_PTR style = GetWindowLongPtr(hfigure, GWL_STYLE);
	style = style & ~(WS_THICKFRAME | WS_CAPTION | WS_SIZEBOX | WS_MAXIMIZEBOX | WS_MINIMIZEBOX);//移除子窗口的移动和调整大小的样式
	SetWindowLongPtr(hfigure, GWL_STYLE, style);

    m_window = QWindow::fromWinId((WId)hfigure);
    m_window->setFlags(m_window->flags() | Qt::CustomizeWindowHint | Qt::WindowTitleHint); //这边可以设置一下属性
    m_widget  = QWidget::createWindowContainer(m_window,this);
	m_widget->setFocusPolicy(Qt::StrongFocus);

    m_widget->setParent(parent);

    m_widget->show();


}

四、参考文章

QT+Unity3D 超详细(将unity3D与QT进行连接,并实现信息传递)

五、最后

在参考文章的内容是,该文章作者说有边框能缩放,没有边框就无法缩放,但是本人在使用以上代码嵌入unity窗口后,暂时没有遇到该问题,即没有边框,且能够正常缩放,同时ui按钮能够正常触发,此为本人项目中实现代码,仅供参考,如有问题,欢迎指正。

相关推荐
向宇it2 小时前
【unity游戏开发——网络】网络游戏通信方案——强联网游戏(Socket长连接)、 弱联网游戏(HTTP短连接)
网络·http·游戏·unity·c#·编辑器·游戏引擎
Mr_Xuhhh2 小时前
网络基础(1)
c语言·开发语言·网络·c++·qt·算法
Zevalin爱灰灰3 小时前
MATLAB GUI界面设计 第六章——常用库中的其它组件
开发语言·ui·matlab
前端开发与ui设计的老司机4 小时前
数字孪生技术引领UI前端设计潮流:增强现实(AR)的集成应用
ui
feiyangqingyun5 小时前
Qt音视频开发技巧/推流带旋转角度/rtsprtmp推流/保存文件到MP4/拉流解析旋转角度
qt·音视频·qt旋转角度推流
共享ui设计和前端开发人才6 小时前
UI前端与数字孪生结合探索:智慧建筑的能耗管理与优化
前端·ui·状态模式
清醒的兰6 小时前
Qt 基于TCP套接字编程
网络·qt·tcp
mahuifa10 天前
PySide环境配置及工具使用
python·qt·环境配置·开发经验·pyside
小灰灰搞电子10 天前
Qt PyQt与PySide技术-C++库的Python绑定
c++·qt·pyqt
切韵10 天前
Unity编辑器扩展:UI绑定复制工具
ui·unity·编辑器