我正试图为我的程序获取针对N8(和C7)的触摸输入,但我无法使用QTouchEvent::touchpoints()创建用于保持触摸点的QList。程序崩溃,出现以下行:Thread has crashed: A data abort exception has occurred accessing 0xee
重载事件函数如下所示:
bool GLWindow::event(QEvent *event)
{
switch ( event->type() ) {
case QEvent::TouchBegin: {
QList<QTouchEvent::TouchPoint> touchBeginPoints =
static_cast<QTouchEvent *>(event)->touchPoints();
foreach (const QTouchEvent::TouchPoint &touchBeginPoint, touchBeginPoints)
{
float touchBeginX = touchBeginPoint.pos().x();
float touchBeginY = touchBeginPoint.pos().y();
qDebug() << "touchBeginPoint := " << touchBeginX << ", " << touchBeginY;
}
break;
}
case QEvent::TouchUpdate: {
// same as touch begin: getting touch point
break;
}
case QEvent::TouchEnd: {
// same as touch begin: getting touch point
break;
}
default: {
qDebug() << "Goodbye";
return true;
}
}
return true;
}
现在,
- 我以前从未使用过集装箱。但在程序的另一部分中创建和使用QList效果良好。我应该在.pro文件中包含一些内容吗?(大多数问题似乎都与我有关!)
- 我读过(一些)关于Qt和Symbian中的异常的文章,但我并不能了解其中的大部分内容。但除了3D对象的纹理之外,我没有做任何基于网络或资源的I/o或操作。运行程序时内存分配是否可能造成一些问题
基本上,我只是想打印触摸点。但我不知道为什么我不能创建一个QList。代码编译得很好。我尽了最大努力(没有成功),但有没有其他方法可以获得触摸点的屏幕坐标(不需要QList)?欢迎任何意见。
[从qt project.org重新发布。]
您的语法是100%正确的。看看这个例子:http://www.developer.nokia.com/Community/Wiki/Painting_in_Qt
我猜QTouchEvent::touchPoints()
返回的列表大到足以溢出堆栈。尝试增加应用程序的堆栈大小。
您的语法正确吗?编译错误似乎强化了teukkam
的观点。。。更换时会发生什么
static_cast<QTouchEvent *>(event)->touchPoints()
带
(dynamic_cast<QTouchEvent *>(event))->touchPoints()
注意括号。。。