Touch off feature

The program will quit if all 4 corners of a touch screen are touched
simultaniously.
This commit is contained in:
pepe82sh
2020-12-16 20:54:06 +01:00
parent 6313491816
commit 70806017d1
2 changed files with 58 additions and 2 deletions

View File

@@ -20,6 +20,8 @@ MainWindow::MainWindow(QWidget *parent) :
ui->setupUi(this);
setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint);
setAttribute(Qt::WA_AcceptTouchEvents);
QTimer::singleShot(5, this, SLOT(showFullScreen()));
QApplication::setOverrideCursor(Qt::BlankCursor);
QLabel *label = this->findChild<QLabel*>("image");
@@ -44,6 +46,59 @@ void MainWindow::keyPressEvent(QKeyEvent* event)
QWidget::keyPressEvent(event);
}
bool isTouchEvent(const QEvent &event)
{
if(event.type() == QEvent::TouchBegin)
return true;
if(event.type() == QEvent::TouchUpdate)
return true;
return false;
}
bool isQuitCombination(const QTouchEvent &touchEvent)
{
bool topLeftTouched = false;
bool topRightTouched = false;
bool bottomLeftTouched = false;
bool bottomRightTouched = false;
for(const auto &touchPoint : touchEvent.touchPoints())
{
const qreal normalizedCornerSize = 0.1;
const qreal x = touchPoint.normalizedPos().x();
const qreal y = touchPoint.normalizedPos().y();
if(x < normalizedCornerSize)
{
if(y < normalizedCornerSize)
topLeftTouched = true;
else if(y > 1-normalizedCornerSize)
bottomLeftTouched = true;
}
else if(x > 1-normalizedCornerSize)
{
if(y < normalizedCornerSize)
topRightTouched = true;
else if(y > 1-normalizedCornerSize)
bottomRightTouched = true;
}
}
return topLeftTouched && topRightTouched
&& bottomLeftTouched && bottomRightTouched;
}
bool MainWindow::event(QEvent* event)
{
if(isTouchEvent(*event))
{
if(isQuitCombination(dynamic_cast<QTouchEvent&>(*event)))
QCoreApplication::quit();
}
else
{
return QMainWindow::event(event);
}
return true;
}
void MainWindow::resizeEvent(QResizeEvent* event)
{
QMainWindow::resizeEvent(event);

View File

@@ -16,8 +16,9 @@ class MainWindow : public QMainWindow
public:
explicit MainWindow(QWidget *parent = 0);
void keyPressEvent(QKeyEvent* event);
void resizeEvent(QResizeEvent* event);
void keyPressEvent(QKeyEvent* event) override;
bool event(QEvent* event) override;
void resizeEvent(QResizeEvent* event) override;
~MainWindow();
void setImage(std::string path);
void setBlurRadius(unsigned int blurRadius);