一杯清酒邀明月
天下本无事,庸人扰之而烦耳。

QT中很多控件都有鼠标点击的事件响应,比如QPushButton,QRadioButton。有时候我们想要实现的是:当鼠标点击控件时,不会产生响应事件。其中的一种方法是使用Qt::WA_TransparentForMouseEvents。

官方对Qt::WA_TransparentForMouseEvents的说明为

When enabled, this attribute disables the delivery of mouse events to the widget and its children. Mouse events are delivered to other widgets as if the widget and its children were not present in the widget hierarchy; mouse clicks and other events effectively "pass through" them. This attribute is disabled by default.

大概的意思是当使能Qt::WA_TransparentForMouseEvents时,鼠标事件就不会传送到该控件及子控件,而是会传到其他的不包含该控件的widget上,这样的话其实就是实现了鼠标穿透的功能。

实现代码

ui->radioButton->setAttribute(Qt::WA_TransparentForMouseEvents, true);

使radioButton控件不响应鼠标点击事件。

posted on 2020-07-03 14:13  一杯清酒邀明月  阅读(2562)  评论(0编辑  收藏  举报