Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;Qt-如何同时捕获键盘和鼠标事件_C++_Qt_Keyboard_Mouse - Fatal编程技术网

C++ C++;Qt-如何同时捕获键盘和鼠标事件

C++ C++;Qt-如何同时捕获键盘和鼠标事件,c++,qt,keyboard,mouse,C++,Qt,Keyboard,Mouse,我正在使用Qt为我的游戏构建一个简单的关卡编辑器。要浏览3d场景,我需要同时使用键盘和鼠标 到目前为止,这就是我所拥有的,它可以工作,但当我使用WASD移动时,我不能四处看看。如何同时捕获和响应键盘和鼠标事件 void MainWindow::mousePressEvent(QMouseEvent* event) { if(event->buttons() == Qt::LeftButton && actionCamera) { ui->

我正在使用Qt为我的游戏构建一个简单的关卡编辑器。要浏览3d场景,我需要同时使用键盘和鼠标

到目前为止,这就是我所拥有的,它可以工作,但当我使用WASD移动时,我不能四处看看。如何同时捕获和响应键盘和鼠标事件

void MainWindow::mousePressEvent(QMouseEvent* event)
{
    if(event->buttons() == Qt::LeftButton && actionCamera)
    {
        ui->renderWindow->trackMouse = true;
    }
}

void MainWindow::mouseReleaseEvent(QMouseEvent* event)
{
    ui->renderWindow->trackMouse = false;
}

void MainWindow::keyPressEvent(QKeyEvent* event)
{

    if(event->key() == Qt::Key_W)
    {
        ui->renderWindow->moveForward = true;
    }

    if(event->key() == Qt::Key_S)
    {
        ui->renderWindow->moveBackwards = true;
    }

    if(event->key() == Qt::Key_A)
    {
        ui->renderWindow->moveLeft = true;
    }

    if(event->key() == Qt::Key_D)
    {
        ui->renderWindow->moveRight = true;
    }
}

void MainWindow::keyReleaseEvent(QKeyEvent* event)
{
    if(event->key() == Qt::Key_W)
    {
        ui->renderWindow->moveForward = false;
    }

    if(event->key() == Qt::Key_S)
    {
        ui->renderWindow->moveBackwards = false;
    }

    if(event->key() == Qt::Key_A)
    {
        ui->renderWindow->moveLeft = false;
    }

    if(event->key() == Qt::Key_D)
    {
        ui->renderWindow->moveRight = false;
    }
}

QMouseEvent和QKeyEvent不能同时触发,只需考虑事件队列中交付的所有事件。但这两个事件在短时间内发生是合理的,因为它们是同时发生的。所以请跟踪这两个事件,并且计时应该是可以的。QMouseEvent和QKeyEvent不能同时触发,只需考虑事件队列中交付的所有事件。但这两个事件在短时间内发生是合理的,因为它们是同时发生的。所以,跟踪这两个事件,时间安排应该是可以的。