Qt设置无边框之后窗口向下偏移问题解决

在设置无边框窗口后,从最小化状态恢复时出现窗口向下偏移的bug。文章提出了一个解决方案,即在最小化前保存窗口位置,然后在窗口状态改变事件中,如果从最小化恢复,则将窗口移动回原来的位置,从而修复偏移问题。
摘要由CSDN通过智能技术生成

不知道为什么,在设置无边框之后,从最小化恢复窗口,窗口会向下偏移一段距离,看起来似乎是为系统的标题栏准备的。

但是我们已经设置无边框了,所以它就会空出一块地方来。

如图所示:

 解决的方法是在设置最小化之前保存窗口位置,从最小化恢复之后将窗口移动到原来的位置。

connect(main, &MainWidget::min, this, [=](){
        normal_pos = this->pos();
        this->showMinimized();
    });
void MainFrame::changeEvent(QEvent *event)
{
    if(event->type() == QEvent::WindowStateChange)
        {
            //修复从最小化恢复窗口会向下偏移的问题
            QWindowStateChangeEvent *stateEvent = static_cast<QWindowStateChangeEvent*>(event);
            if(stateEvent->oldState() & Qt::WindowMinimized) // 从最小化恢复
            {
                this->move(normal_pos);
//                qDebug()<<"normal";
            }
        }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值