Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.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++ 跳过qgraphics场景中qgraphicsitem的鼠标事件_C++_Qt - Fatal编程技术网

C++ 跳过qgraphics场景中qgraphicsitem的鼠标事件

C++ 跳过qgraphics场景中qgraphicsitem的鼠标事件,c++,qt,C++,Qt,我知道如何将事件从qgraphics场景传递到qgraphics项目,但问题是该项目正在执行场景的鼠标事件 例如,在下面的代码中,当按下项目时,输出为“自定义场景已按下” #包括 类CustomScene:publicQgraphicscene { 受保护的: 无效鼠标压力事件(QGraphicsSceneMouseEvent*事件) { if(itemAt(event->pos()) qgraphicscene::mousePressEvent((事件)); 其他的 qDebug()请参阅以下

我知道如何将事件从qgraphics场景传递到qgraphics项目,但问题是该项目正在执行场景的鼠标事件

例如,在下面的代码中,当按下项目时,输出为“自定义场景已按下”

#包括
类CustomScene:publicQgraphicscene
{
受保护的:
无效鼠标压力事件(QGraphicsSceneMouseEvent*事件)
{
if(itemAt(event->pos())
qgraphicscene::mousePressEvent((事件));
其他的
qDebug()请参阅以下文件:

返回鼠标光标在项目坐标中的位置

这意味着,如果鼠标距离项目的上边框和左边框10像素,则无论项目在场景中的何处,都将获得(10,10)作为坐标

您需要的是:

返回场景坐标中的鼠标光标位置

将您的
if
-语句更改为:

 if(itemAt(event->scenePos()))
    QGraphicsScene::mousePressEvent((event));
 else
    qDebug() << "Custom scene clicked.";
if(itemAt(event->scenePos())
qgraphicscene::mousePressEvent((事件));
其他的
qDebug()
 if(itemAt(event->scenePos()))
    QGraphicsScene::mousePressEvent((event));
 else
    qDebug() << "Custom scene clicked.";