Qt mouseEvent和小部件

时间:2017-02-01 10:58:51

标签: qt

我想知道应用程序窗口上按了哪个小部件。要做到这一点,我使用mousePressEvent函数,但它不是我想要的。

  

void MainWindow :: mousePressEvent(QMouseEvent * event){

     

QLabel * child = static_cast(this-> childAt(event-> pos()));

if(!child)
  return; 
     

}

首先,对于标签,我使用上面的代码。但是,孩子永远不会#" null",所以它总是在按下除了标签小部件之外的任何地方时跳过if语句。

顺便说一下,我想也许屏幕上可能有标签,我刚刚检查过这个。结果我看到一个不寻常的情况,即有一个标签,尽管没有使用标签。 (它不仅是标签小部件,情况总是与其他小部件相同。)。

让我说明如何实现这一点,我已经检查了孩子的智慧和可见度,宽度随着窗口的大小而变化,并且在按下任何地方时,能见度总是为真。

qDebug() << "child width =" <<child->width() ;
qDebug() << "isEnabled =" <<QString::number(child->isEnabled()) ;

按下空白区域时的输出:

  

子宽度= 400 isEnabled =&#34; 1&#34;子宽度= 721 isEnabled =&#34; 1&#34;   子宽度= 1059 isEnabled =&#34; 1&#34;

我该如何解决这个问题?

0 个答案:

没有答案