提要
在程序中点击按钮,有时在边缘弹出的弹出框,不能全部展示在用户的面前,弹出框显示的位置会超过程序的边界,从而看不到完整的弹出框,这时可以菜取设置弹出框可以按下鼠标拖动来使其不被遮住,或者在弹出框谈除的位置处,判断使否炒过了程序的边界,若超过了程序的边界,则需要进行位置换算,调整一下显示的位置。
实现
下面以一个例子中下边和右边的边界处弹出框被遮挡,从而采用了调整显示的位置来显示弹出框,使其能正常显示在使用者面前而不被遮挡。以下是实现。
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的位置调整代码,正常情况,弹出框显示在鼠标点击处,若是点击的是程序边缘的按钮,此时会调整弹出框显示的位置,使其能正常显示,不被遮挡。