Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
    ui->setupUi(this);

    installEventFilter(this);
}

bool Widget::eventFilter(QObject *target, QEvent *event)
{
    if(target == this)
    {
        if(event->type() == QEvent::KeyPress)
        {
            QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
            if(keyEvent->key()==QT::Key_Space)
            {
                ui->label->setText("ok");
                return true;
            }
            // 마우스 눌린 상태.
        }
    }

    return QWidget::eventFilter(target, event);
}


错误信息:


  从“ QEvent *”类型到“ QKeyEvent *”类型的无效static_cast
  
  无效使用不完整类型'struct QKeyEvent'
  
  前向声明'struct QKeyEvent'


我想要的是:

label setText("ok")  keypress Event 'a' in Form

最佳答案

错误讯息


  无效使用不完整类型'struct QKeyEvent'


可以很好地说明问题。您忘记了#include QKeyEvent的头文件。添加行

#include <QKeyEvent>


在文件中。

关于c++ - Qt中的eventFilter错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30449391/

10-13 04:28