关于Qt触摸事件的问题
bool GraphicsScene::event(QEvent *event){
qDebug()<<event->type();
switch (event->type()) {
case QEvent::TouchBegin:
{
qDebug()<<"touch Begin";
return true;
}
case QEvent::TouchUpdate:
{
qDebug()<<"touch Update";
return true;
}
case QEvent::TouchEnd:
{
qDebug()<<"touch end";
return true;
}
default:
return QGraphicsScene::event(event);
}
这里,输出的事件代码只有197 , 没有QEvent的Touch事件(194,195,196)。求解,如何才能捕获到Touch事件 获取QTouchEvent --------------------编程问答-------------------- 分也太低了吧 --------------------编程问答-------------------- 确定两点:
1.设备支持touch事件(是触控设备);
2.需要设置窗口属性:setAttribute(Qt::WA_AcceptTouchEvents); //接收touch消息 --------------------编程问答--------------------
都有设置,我刚刚试过了,同样的代码,在QWidget中,可以捕获到Touch事件(194,195,196),而在QGraphicsScene中,只有197 --------------------编程问答-------------------- 根据我的经验,接受触碰事件的是QGraphicsView,然后如果有需要,view会把事件丢给scene处理。而view是widget,按你说的,QWidget可以捕获到touch事件,那么view一定能够捕获到touch事件,所以你去view的event函数中查一下它把touch事件怎么了吧。 --------------------编程问答--------------------
+1
确定下你的设备是否是触控设备,别是鼠标在那点击。
我在开发板上可以捕获到触控事件,没有问题! --------------------编程问答--------------------
谢谢你的回答,我也试过了。在view中,同样的得到的输出的事件代码只有197 , 没有QEvent的Touch事件(194,195,196)。 --------------------编程问答--------------------
谢谢你的回答,我有尝试过,使用QWidget测试,QWidget的event函数中,可以获取到QEvent的Touch事件(194,195,196),当我使用VIEW与SCENE是,事件代码莫名的就变成了197了 --------------------编程问答-------------------- 是不是因为你没有对需要接受touch事件的GraphicsItem调用函数setAcceptTouchEvents(true)?因为GraphicsItem默认是不接受touch事件的。 --------------------编程问答--------------------
是不是因为你没有对需要接受touch事件的GraphicsItem调用函数setAcceptTouchEvents(true)?因为GraphicsItem默认是不接受touch事件的。
在scene中,我还没有添加item到里面。我仅仅只是把touch设备连接上后,用手点击设备,然后在scene里面怎么都没有想要获取到的Touch信号 --------------------编程问答--------------------
是不是因为你没有对需要接受touch事件的GraphicsItem调用函数setAcceptTouchEvents(true)?因为GraphicsItem默认是不接受touch事件的。
在scene中,我还没有添加item到里面。我仅仅只是把touch设备连接上后,用手点击设备,然后在scene里面怎么都没有想要获取到的Touch信号
好吧,我只能说,虽然QGraphicsView是QWidget,但是还是和QWidget有很大区别。你还是加上item之后再去点item看能不能获得touch事件吧,你view里什么都没有添加,估计Qt把这个touch事件忽略了。同时你也要注意item默认是不接受touch事件的。
补充:移动开发 , Qt