当前位置: 代码迷 >> QT开发 >> 多点触摸有关问题
  详细解决方案

多点触摸有关问题

热度:110   发布时间:2016-04-25 03:19:53.0
多点触摸问题
将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;


这样试试看。
  相关解决方案