qt窗口左下角在鼠标位置d出

qt窗口左下角在鼠标位置d出,第1张

1、只要确定d窗左上角的合理位置就可以了。

2、合理位置: 简单的一种就是保证其必在主窗口内。思路就是,判断d窗左上角和右下角的坐标值是否超过主窗口的边界值来重新设置d窗的左上角的坐标值。

三、代码实现:

1 // mouseGPos : 当前鼠标的绝对坐标

2 // pMainWgt : 主窗口

3 // pPopWgt : d窗

4 QPoint CToolBarWgt::getFixGlobalPos(QPoint mouseGPos, QWidget pMainWgt, QWidget pPopWgt)

5 {

6 QPoint mianGPoint = pMainWgt->mapToGlobal(pMainWgt->pos());

7 int nMainLeft = mianGPointx();

8 int nMainTop = mianGPointy();

9 int nMainRight = mianGPointx()+ pMainWgt->width();

10 int nMainBottom = mianGPointy() + pMainWgt->height();

11

12 int nPopLeft = mouseGPosx() - pPopWgt->width()/2 ;

13 int nPopTop = mouseGPosy() - pPopWgt->height();

14 int nPopRight = mouseGPosx() + pPopWgt->width()/2;

15 int nPopBottom = mouseGPosy();

16

17 // 最终要确定的只有左上角的坐标位置:

18 nPopLeft = nPopLeft < nMainLeft nMainLeft: nPopLeft; // d窗左边超出主窗口,赋值为主窗口边界值。

19 nPopTop = nPopTop < nMainTop nMainTop : nPopTop; //d窗上部分超出主窗口上部值,赋值为主窗口上半边界值。

20 nPopLeft = nPopRight > nMainRight nPopLeft - (nPopRight - nMainRight) : nPopLeft; //d窗右侧超出主窗口右侧边界值,则d窗左侧值向左移动超出的部分

21 nPopTop = nPopBottom > nMainBottom nPopTop - (nPopBottom - nMainBottom): nPopTop; //d窗下侧超出主窗口下侧边界值,则d窗上侧值向上移动超出的部分

22 // 返回的QPoint是绝对坐标。

23 return QPoint(nPopLeft, nPopTop);

24 }

这个是用什么语言来实现,不同的语言实现的思路差不多,

就是用定位识别函数来识别 x,y而已,

这个要是java的话要好好看看帮助文档了;

你去csdn 或 51cto 求助效率高点;

以上就是关于qt窗口左下角在鼠标位置d出全部的内容,包括:qt窗口左下角在鼠标位置d出、Qt 记录拖动过程中鼠标坐标。、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10179811.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存