kdeglwidget.cpp
来自「celestia源代码」· C++ 代码 · 共 496 行 · 第 1/2 页
CPP
496 行
appCore->mouseButtonUp(m->x(), m->y(), CelestiaCore::LeftButton); else if (m->button() == MidButton) appCore->mouseButtonUp(m->x(), m->y(), CelestiaCore::MiddleButton); else if (m->button() == RightButton) appCore->mouseButtonUp(m->x(), m->y(), CelestiaCore::RightButton);}void KdeGlWidget::wheelEvent( QWheelEvent* w ){ if (w->delta() > 0 ) { appCore->mouseWheel(-1.0f, 0); } else if (w->delta() < 0) { appCore->mouseWheel(1.0f, 0); }}bool KdeGlWidget::handleSpecialKey(QKeyEvent* e, bool down){ int k = -1; switch (e->key()) { case Key_Up: k = CelestiaCore::Key_Up; break; case Key_Down: k = CelestiaCore::Key_Down; break; case Key_Left: k = CelestiaCore::Key_Left; break; case Key_Right: k = CelestiaCore::Key_Right; break; case Key_Home: k = CelestiaCore::Key_Home; break; case Key_End: k = CelestiaCore::Key_End; break; case Key_F1: k = CelestiaCore::Key_F1; break; case Key_F2: k = CelestiaCore::Key_F2; break; case Key_F3: k = CelestiaCore::Key_F3; break; case Key_F4: k = CelestiaCore::Key_F4; break; case Key_F5: k = CelestiaCore::Key_F5; break; case Key_F6: k = CelestiaCore::Key_F6; break; case Key_F7: k = CelestiaCore::Key_F7; break; case Key_PageDown: k = CelestiaCore::Key_PageDown; break; case Key_PageUp: k = CelestiaCore::Key_PageUp; break;/* case Key_F10: if (down) menuCaptureImage(); break; */ case Key_0: if (e->state() & Qt::Keypad) k = CelestiaCore::Key_NumPad0; break; case Key_1: if (e->state() & Qt::Keypad) k = CelestiaCore::Key_NumPad1; break; case Key_2: if (e->state() & Qt::Keypad) k = CelestiaCore::Key_NumPad2; break; case Key_3: if (e->state() & Qt::Keypad) k = CelestiaCore::Key_NumPad3; break; case Key_4: if (e->state() & Qt::Keypad) k = CelestiaCore::Key_NumPad4; break; case Key_5: if (e->state() & Qt::Keypad) k = CelestiaCore::Key_NumPad5; break; case Key_6: if (e->state() & Qt::Keypad) k = CelestiaCore::Key_NumPad6; break; case Key_7: if (e->state() & Qt::Keypad) k = CelestiaCore::Key_NumPad7; break; case Key_8: if (e->state() & Qt::Keypad) k = CelestiaCore::Key_NumPad8; break; case Key_9: if (e->state() & Qt::Keypad) k = CelestiaCore::Key_NumPad9; break; case Key_A: k = 'A'; break; case Key_Z: k = 'Z'; break; } if (k >= 0) { int buttons = 0; if (e->state() & ShiftButton) buttons |= CelestiaCore::ShiftKey; if (down) appCore->keyDown(k, buttons); else appCore->keyUp(k); return (k < 'A' || k > 'Z'); } else { return false; }}void KdeGlWidget::keyPressEvent( QKeyEvent* e ){ static bool inputMode = false; switch (e->key()) { case Key_Escape: appCore->charEntered('\033'); break; case Key_BackTab: appCore->charEntered(CelestiaCore::Key_BackTab); break; case Key_Q: if( e->state() == ControlButton ) { parentWidget()->close(); } // Intentional fallthrough if *not* Ctrl-Q default: if (appCore->getTextEnterMode() != CelestiaCore::KbNormal || !handleSpecialKey(e, true)) { if ((e->text() != 0) && (e->text() != "")) { appCore->charEntered(e->text().utf8().data()); } } }}void KdeGlWidget::keyReleaseEvent( QKeyEvent* e ){ handleSpecialKey(e, false);}void KdeGlWidget::setCursorShape(CelestiaCore::CursorShape shape) { int cursor; if (currentCursor != shape) { switch(shape) { case CelestiaCore::ArrowCursor: cursor = Qt::ArrowCursor; break; case CelestiaCore::UpArrowCursor: cursor = Qt::UpArrowCursor; break; case CelestiaCore::CrossCursor: cursor = Qt::CrossCursor; break; case CelestiaCore::InvertedCrossCursor: cursor = Qt::CrossCursor; break; case CelestiaCore::WaitCursor: cursor = Qt::WaitCursor; break; case CelestiaCore::BusyCursor: cursor = Qt::WaitCursor; break; case CelestiaCore::IbeamCursor: cursor = Qt::IbeamCursor; break; case CelestiaCore::SizeVerCursor: cursor = Qt::SizeVerCursor; break; case CelestiaCore::SizeHorCursor: cursor = Qt::SizeHorCursor; break; case CelestiaCore::SizeBDiagCursor: cursor = Qt::SizeBDiagCursor; break; case CelestiaCore::SizeFDiagCursor: cursor = Qt::SizeFDiagCursor; break; case CelestiaCore::SizeAllCursor: cursor = Qt::SizeAllCursor; break; case CelestiaCore::SplitVCursor: cursor = Qt::SplitVCursor; break; case CelestiaCore::SplitHCursor: cursor = Qt::SplitHCursor; break; case CelestiaCore::PointingHandCursor: cursor = Qt::PointingHandCursor; break; case CelestiaCore::ForbiddenCursor: cursor = Qt::ForbiddenCursor; break; case CelestiaCore::WhatsThisCursor: cursor = Qt::WhatsThisCursor; break; default: cursor = Qt::CrossCursor; break; } setCursor(QCursor(cursor)); currentCursor = shape; }}CelestiaCore::CursorShape KdeGlWidget::getCursorShape() const{ return currentCursor;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?