Qt 如何使用 x() 和 y() 位置在小部件上查找对象

标签 qt

我有一个主窗口。在主窗口上我有多个 Qlabel。现在,我需要找到单击的 QLabel。 使用MousePressEvent,我可以获得鼠标单击的X()和Y()位置。

我如何使用这个坐标来识别QLabel?

QT中有没有函数可以使用X()和Y()坐标查找点击的对象?

最佳答案

由于QLabel是QWidget的子类,因此您可以在QLabel::mousePressEvent中处理鼠标按下事件

virtual void mousePressEvent ( QMouseEvent * ev )

但是在 QMainWindow 中,您可以使用 childAt 来获取 x,y 处的子窗口部件

QWidget * QWidget::childAt ( int x, int y ) const

QLabel* label= static_cast<QLabel*>(mainWindow->childAt(x,y));

阅读更多内容: http://doc.qt.io/qt-5/qwidget.html#childAt

关于Qt 如何使用 x() 和 y() 位置在小部件上查找对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12350658/

相关文章:

c++ - “variantToString”未在此范围内声明

c++ - 在编译过程中找不到 QMainWindow

javascript - 使用 v8 读取二进制文件的函数

c++ - 在 Qt 中删除树的一个项目

c++ - Qt:我应该使用哪个对象/项目来创建可点击的图标

c++ - QSignalSpy 和 std::shared_ptr

c++ - 从不同的类访问/修改 QDialog 的成员?

c++ - 如何翻译 qmessagebox 中的按钮?

c++ - 从 peter fillmore 编译 proxmark3 fork 时出错

css - QTableView 小部件的 Qt 样式表中有哪些可用选项?