在图形界面中,软件设计者通常需要将活跃窗口限制为一个。在某个窗口活跃时,它的父窗口被它挡住或者挡住一部分,这时候用鼠标去点击父窗口是没有作用的。问题的关键在于将子窗口设置模态:
1 void MainWindow::on_pushButton_clicked() 2 { 3 subwindow *sub=new subwindow(this); 4 sub->setModal(true); 5 sub->show(); 6 }
这里面,on_pushButton_clicked()是一个主窗口的槽函数,当点击主窗口的某个按钮后触发。在这个槽函数里面,新实例化一个一个子窗口,这里有一个十分重要的点,要显示地将this设置为(*sub)的老父亲。之后,调用函数setModal将模式设置了,最后显示出来就ok了。