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按钮能够正常触发,此为本人项目中实现代码,仅供参考,如有问题,欢迎指正。

相关推荐
OH_TPC6 小时前
HarmonyOS APP开发---“动效君“UI动效素材库App,需要用到这个库
ui·华为·harmonyos·鸿蒙
peter676810 小时前
unity2d游戏开发经验总结
unity
郝学胜-神的一滴10 小时前
游戏设计:原型与开发 19:U3D工位布置与性格说明书
人工智能·算法·unity·unreal engine·游戏策划·游戏设计
蓝祁子yoky11 小时前
Qt学习日记 Day15:网络编程(二)- UDP基础
网络·qt·学习
读书札记202212 小时前
Qt UTF-8和UTF-8(BOM)
开发语言·qt
ShineWinsu12 小时前
对于Qt:QProgressBar常见属性的解析
开发语言·c++·qt·进度条·gui·定时器·qprogressbar
ShineWinsu12 小时前
对于Qt:QLCDNumber常见属性以及QTimer的解析
服务器·数据库·c++·qt·gui·qtimer·qlcdnumber
Aman198420 小时前
Claude Code做Unity项目移植(二): 自动执行只读操作,告别频繁的
unity·游戏开发·vibe coding·claude code
听风吹等浪起1 天前
第26章:ViT+InceptionDW+FocalLoss改进|CT骨折影像二分类完整Pytorch实现(含PyQt5推理GUI)
pytorch·qt·分类
ShineWinsu1 天前
对于Qt:QRadioButton常见属性以及QButtonGroup的解析
数据库·c++·qt·microsoft·gui·qradiobutton·qbuttongroup