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

Qt 4.4:接收鼠标事件的禁用小部件,qt,mouseevent,qwidget,Qt,Mouseevent,Qwidget,正如标题所示,有没有一种方法可以让禁用的小部件接收鼠标事件 我正在使用QWidget::setEnabled()来更改小部件的外观,但我仍然希望接收它们的鼠标事件。提前感谢:)您可以使用相关小部件上的事件过滤器来完成此操作。看见您的实现可能如下所示: bool MainWindow::eventFilter(QObject *obj, QEvent *event) { if (ui->pushButton) { if (event->type() ==

正如标题所示,有没有一种方法可以让禁用的小部件接收鼠标事件


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

您可以使用相关小部件上的事件过滤器来完成此操作。看见您的实现可能如下所示:

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);
    }
}
bool主窗口::事件过滤器(QObject*obj,QEvent*event)
{
如果(用户界面->按钮)
{
如果(事件->类型()==QEvent::MouseButtonRelease)
{

qDebug()如果你只是想改变它们的外观,但仍然让它们具有交互性,我建议你使用一种替代方法,而不是禁用小部件。根据定义,禁用的小部件意味着不具有交互性。是的,我觉得这种类型的实现是不正确的。但是,它是更大系统的一部分,因此目前必须在t他的方式:(你忘了先提到你需要installEventFilter()。谢谢。这已经被包含的链接中的信息覆盖了,该链接自发布以来就中断了。该链接现在可以工作了,并且已经有了这些信息。