Tap Gesture Example on Desktop: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
(Add "cleanup" tag)
m (Wieland moved page TapGestureExampleOnDesktop to Tap Gesture Example on Desktop: Better title)
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Cleanup | reason=Auto-imported from ExpressionEngine.}}
Just yesterday a team mate asked me how to fake a gesture event on a desktop, say by clicking on a button, and I quickly wrote this example using Qt Designer form, a push button when clicked sends a tap gesture. Comments welcome :)
Just yesterday a team mate asked me how to fake a gesture event on a desktop, say by clicking on a button, and I quickly wrote this example using Qt Designer form, a push button when clicked sends a tap gesture. Comments welcome :)


Line 29: Line 27:
void MainWindow::gest()
void MainWindow::gest()
{
{
  QTapGesture '''tapGes = new QTapGesture(this);
  QTapGesture *tapGes = new QTapGesture(this);
  tapGes->setPosition(QPointF(5,5));
  tapGes->setPosition(QPointF(5,5));
  QList<QGesture'''> tapGesTureList;
  QList<QGesture*> tapGesTureList;
  tapGesTureList.append(tapGes);
  tapGesTureList.append(tapGes);
  QGestureEvent event(tapGesTureList);
  QGestureEvent event(tapGesTureList);
  QCoreApplication::sendEvent(this, &amp;event);
  QCoreApplication::sendEvent(this, &event);
}
}


Line 41: Line 39:
  if (event->type() == QEvent::Gesture)
  if (event->type() == QEvent::Gesture)
  {
  {
  QGestureEvent '''gestevent = static_cast<QGestureEvent'''>(event);
  QGestureEvent *gestevent = static_cast<QGestureEvent*>(event);
  if (QGesture *gest = gestevent->gesture(Qt::TapGesture))
  if (QGesture *gest = gestevent->gesture(Qt::TapGesture))
  {
  {
  QTapGesture '''tapgest = static_cast<QTapGesture'''>(gest);
  QTapGesture *tapgest = static_cast<QTapGesture*>(gest);
  qDebug() << "tap gesture got at: " << tapgest->position();
  qDebug() << "tap gesture got at: " << tapgest->position();
  }
  }

Latest revision as of 15:28, 24 March 2016

Just yesterday a team mate asked me how to fake a gesture event on a desktop, say by clicking on a button, and I quickly wrote this example using Qt Designer form, a push button when clicked sends a tap gesture. Comments welcome :)

PS. Just remember: Gesture objects are not constructed directly by developers. They are created by the QGestureRecognizer object that is registered with the application; see QGestureRecognizer::registerRecognizer().

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QTapGesture>
#include <QGestureEvent>

MainWindow::MainWindow(QWidget *parent) :
 QMainWindow(parent),
 ui(new Ui::MainWindow)
{
 ui->setupUi(this);
 connect(ui->pushButton, SIGNAL (clicked()), this, SLOT (gest()));
 grabGesture(Qt::TapGesture);
}

MainWindow::~MainWindow()
{
 ungrabGesture(Qt::TapGesture);
 delete ui;
}

void MainWindow::gest()
{
 QTapGesture *tapGes = new QTapGesture(this);
 tapGes->setPosition(QPointF(5,5));
 QList<QGesture*> tapGesTureList;
 tapGesTureList.append(tapGes);
 QGestureEvent event(tapGesTureList);
 QCoreApplication::sendEvent(this, &event);
}

bool MainWindow::event(QEvent *event)
{
 if (event->type() == QEvent::Gesture)
 {
 QGestureEvent *gestevent = static_cast<QGestureEvent*>(event);
 if (QGesture *gest = gestevent->gesture(Qt::TapGesture))
 {
 QTapGesture *tapgest = static_cast<QTapGesture*>(gest);
 qDebug() << "tap gesture got at: " << tapgest->position();
 }
 }
 return true;
}