16,815
社区成员




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);
}
bool Widget::event(QEvent *e)
{
QEvent::Type type = e->type();
switch(type)
{
case QEvent::TouchBegin:
e->accept();
dumpTouchEvent(e);
return true;
case QEvent::TouchUpdate:
e->accept();
dumpTouchEvent(e);
return true;
case QEvent::TouchEnd:
e->accept();
dumpTouchEvent(e);
return true;
case QEvent::TouchCancel:
e->accept();
dumpTouchEvent(e);
return true;
default:
break;
}
return QWidget::event(e);
}
这是我的项目中的代码,可以用的。 switch (event->type()) {
case QEvent::TouchBegin:
event->accept();
return true;
这样试试看。event->accept();
但是后面的TouchUpdate和TouchEnd事件,还是不能进入。event->accept();
但是TouchUpdate和TouchEnd事件,我还是不能调用。case QEvent::TouchBegin:
break;
这里的代码,收到TouchBegin 事件时一定要 accept 一下。
欢迎给我投票:Qt on Android: Qt Quick 事件处理之信号与槽
欢迎访问我的博客:http://blog.csdn.net/foruok