将Qt版本更新到5.3后,发现原来的多点触摸程序,现在无法识别到
QEvent::TouchBegin:
QEvent::TouchUpdate:
case QEvent::TouchEnd:
这些事件了,
而在原来4.8版本的Qt中完全正常,测试代码如下:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
nextShowWidget(0),
currentWidget(0)
{
ui->setupUi(this);
setAttribute(Qt::WA_AcceptTouchEvents);//开启触摸功能
myWidget = new WidgetFactor(this);
myWidget->WidgetFactorCreat(this);
}
bool MainWindow::event(QEvent *event)
{
switch (event->type()) {
case QEvent::TouchBegin:
break;
case QEvent::TouchUpdate:
{
QTouchEvent *touchEvent = static_cast<QTouchEvent *>(event);
QList<QTouchEvent::TouchPoint> touchPoints = touchEvent->touchPoints();
const QTouchEvent::TouchPoint &touchPoint0 = touchPoints.first();
qreal currentScaleFactor = QLineF(touchPoint0.pos(), touchPoint0.startPos()).dx();
if(currentScaleFactor != 0) {
nextShowWidget = myWidget->WidgetFactorMove(currentScaleFactor > 0 ? NEXT : PRE,
currentScaleFactor,
currentWidget);
}
ui->label->setText(QString::number((int)currentScaleFactor, 10));
break;
}
case QEvent::TouchEnd:
{
currentWidget = myWidget->WidgetFactorShow(currentWidget, nextShowWidget);
return true;
}
default:
break;
}
return QWidget::event(event);
}
发现这段代码在5.3版本的Qt中无法识别触摸,求大虾帮助!!
------解决方案--------------------
switch (event->type()) {
case QEvent::TouchBegin:
event->accept();
return true;这样试试看。