• 3900阅读
  • 9回复

有什么办法能知道鼠标按的是哪个标签? [复制链接]

上一主题 下一主题
离线zealane
 

只看楼主 倒序阅读 楼主  发表于: 2009-06-01
自定义了一个Showlabel 部件,继承于QLabel,
重写了mousePressEvent事件,在该事件里,发射信号,显示屏幕键盘。

在程序中实例化了三个Showlabel,每个Showlabel收到鼠标点击事件后都会发射信号。
问题是,我想知道鼠标按的是哪个label,该怎么弄?

我想到的笨方法:就是在Showlabel的mousePressEvent事件中,判断event->globalX和event->globalY的位置位于哪个标签内。
但是甚是麻烦,标签的位置可能会移动。
不知道哪位能给我一个好办法?
谢谢了。
离线shiroki

只看该作者 1楼 发表于: 2009-06-01
在槽函数里可以调sender获得发送信号的控件指针
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线zealane

只看该作者 2楼 发表于: 2009-06-01
楼上的能具体点吗?
看来你的方法不错。嘎嘎
离线浪迹江湖

只看该作者 3楼 发表于: 2009-06-01
QMouseEvent
离线zealane

只看该作者 4楼 发表于: 2009-06-01
引用第3楼浪迹江湖于2009-06-01 16:48发表的  :
QMouseEvent

里面没有引用对象的指针吧?
离线yang_huafeng

只看该作者 5楼 发表于: 2009-06-01
QObject * QObject::sender ()   返回信号的object指针
QT使用中...
离线yang_huafeng

只看该作者 6楼 发表于: 2009-06-01
如果需要直观的话自己写个信号:
clicked(QWidget *)  把信号对象以参数的形式传过去

在mousePressEvent事件中发出信号 emit clicked(this);
QT使用中...
离线yleesun

只看该作者 7楼 发表于: 2009-06-01
楼上正解
QObject * QObject::sender ()返回QObject指针,再转换为按钮类型
离线duduqq

只看该作者 8楼 发表于: 2009-06-01
在mouseMoveEvent里面用
qobject_cast<QLabel *>(childAt(event->pos()));
离线zealane

只看该作者 9楼 发表于: 2009-06-02
谢谢各位。
快速回复
限100 字节
 
上一个 下一个