Qt界面总是显示在前方

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

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

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

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

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

查看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();

}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值