zoukankan      html  css  js  c++  java
  • 如何获得 Qt窗口部件在主窗口中的位置--确定鼠标是否在某一控件上与在控件上的位置

    用Qt Creator 设计程序时,最方便的就是ui设计器,可以很容易的得到想要的布局。

    但是这样自动布局带来的后果是很难知道窗口中某一部件在主窗口中的相对位置。

    在处理子窗口鼠标事件时变的很麻烦。主窗口有菜单、工具条等,想用鼠标绘图,

    把鼠标轨迹映射到窗口部件上,这些问题。

    其实最主要的是获得窗口部件的起始点相对主窗口的位置。

    例如:在主窗口拖入一个QScrollArea 在其上放一个QLabel用来显示鼠标事件。

    可以在ui对象结构上看到如下结构。

     

    大家知道,我们可以用pos()来获得某一窗口部件的起始点相对其父的位置。

    那么,看结构可知,要获得scrollArea_2在主窗口(MainWindow)中的相对位置

    即为:ui->scrollArea_2->pos()+ui->centralWidget->pos()

    所以想获得窗口ScrollArea_2在主窗口中的相对位置区域为:

        labelrect = QRect(ui->scrollArea_2->pos()+ui->centralWidget->pos(),
                          ui->scrollArea_2->size());
    
    

    那么判断鼠标是否在此控件上只需在鼠标事件响应函数内写如下语句即可:

    if(labelrect.contains(event->pos()))   {……}

    现在你可以在任意复杂的ui结构中确定某一子部件的位置了,但一定要注意:

    父关系,即当前部件于其父部件的相对位置,其父部件与上层部件的相对位置,

    直到与主窗口的相对位置。

    http://blog.csdn.net/yh_1988/article/details/6773451

  • 相关阅读:
    针对Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1的解决方案
    MAC配置C++运行环境
    Keras 模型相关操作
    微信小程序 WXS
    vue 长列表优化
    webpack4 SplitChunks插件 代码拆分
    node path api
    mysql的模型依赖说明
    MySQL和MyCat replace
    SQL Server中WITH(NOLOCK)提示用在视图上会怎样(转载)
  • 原文地址:https://www.cnblogs.com/findumars/p/8001411.html
Copyright © 2011-2022 走看看