1、自定义类ccustomwidget.h
2、自定义类ccustomwidget.cpp
3、ccustomwidget.ui
4、mainwindow.h
5、mainwindow.cpp
6、显示效果(checkBox可以显示鼠标点击,但CCustomWidget的两个编辑框以及PushButton不响应鼠标点击)
解决方案:
将customWidget.show()改为 customWidget.raise();
原因分析:
由于customWidget是mainwindow的内嵌对象,因此customWidget构造函数优先调用,然后mainwindow构造函数调用,customWidget对象可能放在了mainwindow窗口的底部,无法响应鼠标操作,因此需要raise()将其提升到顶部,就可以响应鼠标事件了。
其它解决方案:(在主窗口构造函数中从堆上构造CCustomWidget,使之晚于主窗口界面的构造,便放到了窗口的顶部)
在主窗口的头文件中使用CCustomWidget* pCustomWdiget;
在主窗口的构造函数中 pCustomWidget = new CCustomWidget(this); pCustomWidget->show();
最佳解决方案:
在CCustomWidget类的实现文件中,获取QShowEvent,然后调用this->raise();
标签:控件,鼠标,自定义,响应,customWidget,CCustomWidget,mainwindow From: https://www.cnblogs.com/lucien-zhang/p/16711005.html