我有一个K *窗口,其中包含一个需要过滤事件的小部件。
例如,我不想点击它的可能性......
我该怎么做?
我是否要使用eventfilters?在这种情况下,最好的方法是什么?
但我的问题是我不能将我的小部件子类化,因为它是一个TerminalInterface-> widget(),而不是像其他人一样的对象:\
答案 0 :(得分:2)
除了第一个答案中的setEnabled大锤方法外,还有另外两种方法,其中一种方法是使用eventfilters。
另一个是子窗口小部件,然后重新实现鼠标*事件。简单地将它们留空将阻止任何鼠标交互。所以:
MyWidget:public QSomeWidget { Q_OBJECT 上市: MyWidget(QWidget * parent);
保护: void mousePressEvent(QMouseEvent *){} ..等.. };
答案 1 :(得分:1)
QWidget具有enabled
属性。只需拨打widget->setEnabled(false)
,即可阻止其接受鼠标点击。它也可能会修改其外观:例如QPushButton
将变灰。
事件过滤器听起来像是你想要的过度杀伤。
答案 2 :(得分:1)
看起来eventFilter()
就是你想要的。
以下是讨论它的Qt文档部分: Event Filters
基本上,您必须创建一个继承QObject
的类,然后实现虚函数eventFilter()
。然后使用过滤器作为参数调用要过滤的对象上的installEventFilter()方法。