emsApplication/applications/EmsShower/appinit.cpp

69 lines
1.4 KiB
C++

#include "appinit.h"
//#include "qmutex.h"
#include "qapplication.h"
#include "qevent.h"
#include "qwidget.h"
AppInit AppInit::self;
AppInit *AppInit::Instance()
{
// if (!self)
// {
// QMutex mutex;
// QMutexLocker locker(&mutex);
// if (!self)
// {
// self = new AppInit;
// }
// }
return &self;
}
AppInit::AppInit(QObject *parent) : QObject(parent)
{
}
bool AppInit::eventFilter(QObject *obj, QEvent *evt)
{
QWidget *w = (QWidget *)obj;
if (!w->property("canMove").toBool())
{
return QObject::eventFilter(obj, evt);
}
static QPoint mousePoint;
static bool mousePressed = false;
QMouseEvent *event = static_cast<QMouseEvent *>(evt);
if (event->type() == QEvent::MouseButtonPress)
{
if (event->button() == Qt::LeftButton)
{
mousePressed = true;
mousePoint = event->globalPos() - w->pos();
return true;
}
}
else if (event->type() == QEvent::MouseButtonRelease)
{
mousePressed = false;
return true;
}
else if (event->type() == QEvent::MouseMove)
{
if (mousePressed && (event->buttons() && Qt::LeftButton))
{
w->move(event->globalPos() - mousePoint);
return true;
}
}
return QObject::eventFilter(obj, evt);
}
void AppInit::start()
{
qApp->installEventFilter(this);
}