Handle keyboard in QML
This commit is contained in:
@@ -27,6 +27,7 @@ public:
|
||||
m_renderer->t(mitem->t());
|
||||
m_renderer->hue(mitem->hue());
|
||||
m_renderer->count(mitem->count());
|
||||
m_renderer->lagging(mitem->lagging());
|
||||
}
|
||||
|
||||
QOpenGLFramebufferObject *createFramebufferObject(const QSize &size) override {
|
||||
@@ -87,52 +88,37 @@ void MagnumItem::setCount(qint8 count) {
|
||||
update();
|
||||
}
|
||||
|
||||
void MagnumItem::keyPressEvent(QKeyEvent *evt) {
|
||||
switch (evt->key()) {
|
||||
case Qt::Key_L:
|
||||
auto camera = m_renderer->camera();
|
||||
if (camera) {
|
||||
if (camera->lagging() > 0.0f) {
|
||||
camera->setLagging(0.0f);
|
||||
} else {
|
||||
camera->setLagging(0.85f);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
evt->accept();
|
||||
void MagnumItem::setLagging(qreal lagging) {
|
||||
if (lagging == m_lagging) return;
|
||||
m_lagging = lagging;
|
||||
emit laggingChanged();
|
||||
update();
|
||||
}
|
||||
|
||||
void MagnumItem::mousePressEvent(QMouseEvent *evt) {
|
||||
if (auto camera = m_renderer->camera()) {
|
||||
if (auto& camera = m_renderer->camera()) {
|
||||
camera->initTransformation({evt->pos().x(), evt->pos().y()});
|
||||
}
|
||||
evt->accept();
|
||||
}
|
||||
|
||||
void MagnumItem::mouseReleaseEvent(QMouseEvent *evt) {
|
||||
evt->accept();
|
||||
}
|
||||
|
||||
void MagnumItem::mouseMoveEvent(QMouseEvent *evt) {
|
||||
if (!evt->buttons())
|
||||
return;
|
||||
if (auto camera = m_renderer->camera()) {
|
||||
if (auto& camera = m_renderer->camera()) {
|
||||
if (evt->modifiers() & Qt::ShiftModifier) {
|
||||
camera->translate({evt->pos().x(), evt->pos().y()});
|
||||
} else {
|
||||
camera->rotate({evt->pos().x(), evt->pos().y()});
|
||||
}
|
||||
}
|
||||
evt->accept();
|
||||
}
|
||||
|
||||
void MagnumItem::wheelEvent(QWheelEvent *evt) {
|
||||
if (auto camera = m_renderer->camera()) {
|
||||
if (auto& camera = m_renderer->camera()) {
|
||||
const Float delta = evt->delta();
|
||||
if (Math::abs(delta) < 1.0e-2f)
|
||||
return;
|
||||
camera->zoom(delta);
|
||||
camera->zoom(delta*.01f);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user