Qt界面总是显示在前方

大家可能都碰到过这种问题,界面用于监控某些状态所以一般是不会直接关闭的,或者点击了关闭也希望能够继续运行。但这种界面往往在最小化或关闭再打开后不能显示到当前界面最上方。

查看QWidget头文件,使用raise()强行设置到最上方还是不行。。。

然后还试了重写closeEvent然后手动showMinimized和shouMaximized还是效果不理想。最后终于找到了!!!

wgt->setWindowState((wgt->windowState() &~Qt::WindowMinimized) | Qt::WindowActive);//强制设置界面为最前方

上面这句也不难理解,就是每次打开界面前都强行设置窗体控件的状态为非最小化、**状态;

Qt界面总是显示在前方

查看Qt的帮助文档

Qt界面总是显示在前方

 

强行设置窗口的工作状态,并**即可。普通show() setVisiable() 功能仅限于将界面**,并没有实际设置界面状态

代码展示

void MainWindow::on_btnWgt_clicked()

{

    //……

    if(!m_pWgt)

    {

        m_pWgt=new MyWgt();

        //……初始化窗体

    }

//设置窗体显示到当前页面最前方

    m_pWgt->show();

    m_pWgt->setWindowState((m_pWgt->windowState()&~Qt::WindowMinimized) | Qt::WindowActive);

    m_pWgt->raise();

}

此时界面无论是经过任何操作,当主动显示界面时都是在窗口最前方。