qt中调整弹出框的位置

提要

在程序中点击按钮,有时在边缘弹出的弹出框,不能全部展示在用户的面前,弹出框显示的位置会超过程序的边界,从而看不到完整的弹出框,这时可以菜取设置弹出框可以按下鼠标拖动来使其不被遮住,或者在弹出框谈除的位置处,判断使否炒过了程序的边界,若超过了程序的边界,则需要进行位置换算,调整一下显示的位置。

实现

下面以一个例子中下边和右边的边界处弹出框被遮挡,从而采用了调整显示的位置来显示弹出框,使其能正常显示在使用者面前而不被遮挡。以下是实现。

 if(m_configName != nullptr)
    {
        //判断窗口的位置,进行调整,使其显示不用拖动2021-5-25
        int x,y;
        if(cursor().pos().x() + m_configName->size().width() > BASE_W)
        {
            x = BASE_W - m_configName->size().width();
        }
        else
        {
            x = cursor().pos().x();
        }
        if(cursor().pos().y() + m_configName->size().height() > BASE_H)
        {
            y = BASE_H - m_configName->size().height();
        }
        else
        {
            y = cursor().pos().y();
        }
        m_configName->setGeometry(x,y,m_configName->size().width(),m_configName->size().height());
        //点击按钮出现在按钮点击处,对话框本身可以拖动
//        m_configName->setGeometry(cursor().pos().x(),cursor().pos().y() - 10,m_configName->size().width(),m_configName->size().height());
        m_configName->show();
    }```
以上是弹出框m_configName的位置调整代码,正常情况,弹出框显示在鼠标点击处,若是点击的是程序边缘的按钮,此时会调整弹出框显示的位置,使其能正常显示,不被遮挡。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肩上风骋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值