项目中要用到非模态窗口,程序一开始弹出一个主窗口来,点击一个按钮的时候弹出一个非模态窗口,虽然是一个比较简单的需求,但是在实现的过程中有各种问题。列一下自己遇到的问题并且说一下自己的解决方法。
1) 弹出的非模态窗口始终躲在最后面,并且非模态窗口上的控件不能操作。
主窗口是一个模态的窗口,非模态窗口在初始化的时候没有把主窗口作为他的父窗口。所以弹出来的非模态窗口就始终躲在最后面。
CModealDlg*dlg = new CModealDlg(this); //this 指针是主窗口的指针.dlg->setModal(false);
dlg->show(); //一定要调用show 函数,不能是exec 函数
这种弹出的非模态窗口类似find 窗口,始终在主窗口的前面
2) 弹出的非模态窗口和主窗口不能随意切换
弹出非模态窗口之后,如果点击主窗口的话,这个时候应该是主窗口显示在最前面,也就是说点哪个窗口哪个就应该在最前面。这个主要是因为你的主窗口是模态导致的。所以需要把主窗口设置为非模态