我想知道应用程序窗口上按了哪个小部件。要做到这一点,我使用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;
我该如何解决这个问题?