Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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
Button Qt3到Qt4更新后的QMouseEvent不再正确响应_Button_Qt4_Mouseevent_Qt3 - Fatal编程技术网

Button Qt3到Qt4更新后的QMouseEvent不再正确响应

Button Qt3到Qt4更新后的QMouseEvent不再正确响应,button,qt4,mouseevent,qt3,Button,Qt4,Mouseevent,Qt3,我正在使用一个大型的多文件Qt接口,并且一直在将多个部分从Qt3更新到Qt4。不幸的是,在这条线上的某个地方,我通过按下不同的鼠标按钮组合,取消了在中央QGLWidget场景中移动(平移、旋转等)的功能。我对原始鼠标事件所做的更改与 旧的: 新的: 我还尝试在新版本中简单地使用e->button(),但没有成功;本来应该发生在鼠标上的事情现在不再发生了。从用户指南中,我看到旧的state()函数在事件生成前立即返回按钮状态,而buttons()函数在事件生成后立即返回状态,但这是推荐的替代方法(

我正在使用一个大型的多文件Qt接口,并且一直在将多个部分从Qt3更新到Qt4。不幸的是,在这条线上的某个地方,我通过按下不同的鼠标按钮组合,取消了在中央QGLWidget场景中移动(平移、旋转等)的功能。我对原始鼠标事件所做的更改与

旧的:

新的:

我还尝试在新版本中简单地使用
e->button()
,但没有成功;本来应该发生在鼠标上的事情现在不再发生了。从用户指南中,我看到旧的
state()
函数在事件生成前立即返回按钮状态,而
buttons()
函数在事件生成后立即返回状态,但这是推荐的替代方法(我不知道这些事情发生的时间,所以我不知道会有多大的不同)

无论如何,我注意到,当我运行程序时,我得到一条消息
QWidget::insert action:trust to insert null action
。这可能与鼠标事件有关(这是我的第一反应)


如果是这样,我可以对鼠标做些什么?如果不是,它无论如何都必须修复,因此我想知道:有没有办法追溯到导致问题的小部件/操作?

为什么要将鼠标按钮与控件修改器进行比较?(与Qt::LeftButton、Qt::RightButton等不同)还有“QWidget::insert action”错误消息不太可能与您的问题有关。当用户按住control键的同时按下鼠标按钮时会发生此操作。例如,control+右键单击并拖动可使用户放大和缩小场景。我没有编写原始代码,因此我对看到“&”而不是“&&&”有点感兴趣。也许我应该研究一下。我明白了。然后你必须使用按钮()和修饰符()的组合来实现这个检查:if((e->buttons()&Qt::RightButton)&&(e->modifiers()&Qt::ControlModifier))
 if(e->state() & Qt::ControlButton){ /*... do things  */ }
if(e->buttons() & Qt::ControlModifier){ /*... do things  */ }