Qt 4.4:禁用接收鼠标事件的小部件

发布于 2024-12-20 19:55:21 字数 102 浏览 1 评论 0原文

正如标题所示,有没有办法让禁用的小部件接收鼠标事件?

我正在使用 QWidget::setEnabled() 来更改小部件的外观,但我仍然想接收它们的鼠标事件。提前致谢 :)

As the title suggests, is there a way for a disabled widget to receive mouse events?

I'm using QWidget::setEnabled() for changing the appearance of widgets but I still want to receive their mouse events. Thanks in advance :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

傻比既视感 2024-12-27 19:55:21

您可以使用相关小部件上的事件过滤器来执行此操作。请参阅QObject::eventFilter()。您的实现可能如下所示:

bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
    if (ui->pushButton)
    {
        if (event->type() == QEvent::MouseButtonRelease)
        {
            qDebug() << "mouse button";
            return true;
        } else
        {
            return false;
        }
    } else
    {
        // pass the event on to the parent class
        return QMainWindow::eventFilter(obj, event);
    }
}

即使按钮被禁用,这也会起作用。

You can do this with an event filter on the widget in question. See QObject::eventFilter(). Your implementation might look something like this:

bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
    if (ui->pushButton)
    {
        if (event->type() == QEvent::MouseButtonRelease)
        {
            qDebug() << "mouse button";
            return true;
        } else
        {
            return false;
        }
    } else
    {
        // pass the event on to the parent class
        return QMainWindow::eventFilter(obj, event);
    }
}

This will work even if the button is disabled.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文