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 + -
显示快捷键?