5

我有一个 K* 窗口,其中有一个需要过滤事件的小部件。

例如,我不希望点击它的可能性......

我怎样才能做到这一点?

我必须使用事件过滤器吗?在这种情况下,最好的方法是什么?


但我的问题是我不能子类化我的小部件,因为它是 TerminalInterface->widget(),而不是像其他对象:\

4

3 回答 3

2

除了第一个答案中的 setEnabled sledgehammer 方法外,还有其他两种方法,其中一种是使用事件过滤器。

另一种是子类化小部件,然后重新实现,比如说,鼠标*事件。只需将它们留空即可防止任何鼠标交互。所以:

MyWidget : public QSomeWidget { Q_OBJECT public: MyWidget(QWidget *parent);

protected: void mousePressEvent(QMouseEvent *) {} .. etc .. };

于 2008-12-20T17:44:56.897 回答
1

QWidget 有一个enabled属性。只需调用widget->setEnabled(false),这将阻止它接受鼠标点击。它还可以修改其外观:例如 aQPushButton将变灰。

事件过滤器听起来像你想要的过度杀伤力。

于 2008-12-20T16:46:53.097 回答
1

看起来eventFilter()就是你想要的。

这是讨论它的 Qt 文档部分: 事件过滤器

基本上你必须创建一个继承QObject然后实现虚函数的类eventFilter()。然后在要过滤的对象上调用installEventFilter()方法,并将过滤器作为参数。

于 2008-12-23T16:55:34.793 回答