⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 q3textedit.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 5 页
字号:
            break;        case Qt::ControlButton:        case Qt::ControlButton|Qt::ShiftButton:        case Qt::ControlButton|Qt::Keypad:        case Qt::ControlButton|Qt::ShiftButton|Qt::Keypad:            switch (ke->key()) {            case Qt::Key_Tab:            case Qt::Key_Backtab:                ke->ignore();                break;// Those are too frequently used for application functionality/*            case Qt::Key_A:            case Qt::Key_B:            case Qt::Key_D:            case Qt::Key_E:            case Qt::Key_F:            case Qt::Key_H:            case Qt::Key_I:            case Qt::Key_K:            case Qt::Key_N:            case Qt::Key_P:            case Qt::Key_T:*/            case Qt::Key_C:            case Qt::Key_V:            case Qt::Key_X:            case Qt::Key_Y:            case Qt::Key_Z:            case Qt::Key_Left:            case Qt::Key_Right:            case Qt::Key_Up:            case Qt::Key_Down:            case Qt::Key_Home:            case Qt::Key_End:#if defined (Q_WS_WIN)            case Qt::Key_Insert:            case Qt::Key_Delete:#endif                ke->accept();            default:                break;            }            break;        default:            switch (ke->key()) {#if defined (Q_WS_WIN)            case Qt::Key_Insert:                ke->accept();#endif            default:                break;            }            break;        }    }    if (e->type() == QEvent::Show) {        if (#ifdef QT_TEXTEDIT_OPTIMIZATION             !d->optimMode &&#endif             d->ensureCursorVisibleInShowEvent ) {            ensureCursorVisible();            d->ensureCursorVisibleInShowEvent = false;        }        if (!d->scrollToAnchor.isEmpty()) {            scrollToAnchor(d->scrollToAnchor);            d->scrollToAnchor.clear();        }    }    return QWidget::event(e);}/*!    Processes the key event, \a e. By default key events are used to    provide keyboard navigation and text editing.*/void Q3TextEdit::keyPressEvent(QKeyEvent *e){    changeIntervalTimer->stop();    interval = 10;    bool unknownKey = false;    if (isReadOnly()) {        if (!handleReadOnlyKeyEvent(e))            Q3ScrollView::keyPressEvent(e);        changeIntervalTimer->start(100, true);        return;    }    bool selChanged = false;    for (int i = 1; i < doc->numSelections(); ++i) // start with 1 as we don't want to remove the Standard-Selection        selChanged = doc->removeSelection(i) || selChanged;    if (selChanged) {        cursor->paragraph()->document()->nextDoubleBuffered = true;        repaintChanged();    }    bool clearUndoRedoInfo = true;    switch (e->key()) {    case Qt::Key_Left:    case Qt::Key_Right: {        // a bit hacky, but can't change this without introducing new enum values for move and keeping the        // correct semantics and movement for BiDi and non BiDi text.        CursorAction a;        if (cursor->paragraph()->string()->isRightToLeft() == (e->key() == Qt::Key_Right))            a = e->state() & Qt::ControlButton ? MoveWordBackward : MoveBackward;        else            a = e->state() & Qt::ControlButton ? MoveWordForward : MoveForward;        moveCursor(a, e->state() & Qt::ShiftButton);        break;    }    case Qt::Key_Up:        moveCursor(e->state() & Qt::ControlButton ? MovePgUp : MoveUp, e->state() & Qt::ShiftButton);        break;    case Qt::Key_Down:        moveCursor(e->state() & Qt::ControlButton ? MovePgDown : MoveDown, e->state() & Qt::ShiftButton);        break;    case Qt::Key_Home:        moveCursor(e->state() & Qt::ControlButton ? MoveHome : MoveLineStart, e->state() & Qt::ShiftButton);        break;    case Qt::Key_End:        moveCursor(e->state() & Qt::ControlButton ? MoveEnd : MoveLineEnd, e->state() & Qt::ShiftButton);        break;    case Qt::Key_Prior:        moveCursor(MovePgUp, e->state() & Qt::ShiftButton);        break;    case Qt::Key_Next:        moveCursor(MovePgDown, e->state() & Qt::ShiftButton);        break;    case Qt::Key_Return: case Qt::Key_Enter:        if (doc->hasSelection(Q3TextDocument::Standard, false))            removeSelectedText();        if (textFormat() == Qt::RichText && (e->state() & Qt::ControlButton)) {            // Ctrl-Enter inserts a line break in rich text mode            insert(QString(QChar(QChar::LineSeparator)), true, false);        } else {#ifndef QT_NO_CURSOR            viewport()->setCursor(isReadOnly() ? Qt::ArrowCursor : Qt::IBeamCursor);#endif            clearUndoRedoInfo = false;            doKeyboardAction(ActionReturn);            emit returnPressed();        }        break;    case Qt::Key_Delete:#if defined (Q_WS_WIN)        if (e->state() & Qt::ShiftButton) {            cut();            break;        } else#endif        if (doc->hasSelection(Q3TextDocument::Standard, true)) {            removeSelectedText();            break;        }        doKeyboardAction(e->state() & Qt::ControlButton ? ActionWordDelete                          : ActionDelete);        clearUndoRedoInfo = false;        break;    case Qt::Key_Insert:        if (e->state() & Qt::ShiftButton)            paste();#if defined (Q_WS_WIN)        else if (e->state() & Qt::ControlButton)            copy();#endif        else            setOverwriteMode(!isOverwriteMode());        break;    case Qt::Key_Backspace:#if defined (Q_WS_WIN)        if (e->state() & Qt::AltButton) {            if (e->state() & Qt::ControlButton) {                break;            } else if (e->state() & Qt::ShiftButton) {                redo();                break;            } else {                undo();                break;            }        } else#endif        if (doc->hasSelection(Q3TextDocument::Standard, true)) {            removeSelectedText();            break;        }        doKeyboardAction(e->state() & Qt::ControlButton ? ActionWordBackspace                          : ActionBackspace);        clearUndoRedoInfo = false;        break;    case Qt::Key_F16: // Copy key on Sun keyboards        copy();        break;    case Qt::Key_F18:  // Paste key on Sun keyboards        paste();        break;    case Qt::Key_F20:  // Cut key on Sun keyboards        cut();        break;    case Qt::Key_Direction_L:        if (doc->textFormat() == Qt::PlainText) {            // change the whole doc            Q3TextParagraph *p = doc->firstParagraph();            while (p) {                p->setDirection(QChar::DirL);                p->setAlignment(Qt::AlignLeft);                p->invalidate(0);                p = p->next();            }        } else {            if (!cursor->paragraph() || cursor->paragraph()->direction() == QChar::DirL)                return;            cursor->paragraph()->setDirection(QChar::DirL);            if (cursor->paragraph()->length() <= 1&&                 ((cursor->paragraph()->alignment() & (Qt::AlignLeft | Qt::AlignRight)) != 0))                setAlignment(Qt::AlignLeft);        }        repaintChanged();        break;    case Qt::Key_Direction_R:        if (doc->textFormat() == Qt::PlainText) {            // change the whole doc            Q3TextParagraph *p = doc->firstParagraph();            while (p) {                p->setDirection(QChar::DirR);                p->setAlignment(Qt::AlignRight);                p->invalidate(0);                p = p->next();            }        } else {            if (!cursor->paragraph() || cursor->paragraph()->direction() == QChar::DirR)                return;            cursor->paragraph()->setDirection(QChar::DirR);            if (cursor->paragraph()->length() <= 1&&                 ((cursor->paragraph()->alignment() & (Qt::AlignLeft | Qt::AlignRight)) != 0))                setAlignment(Qt::AlignRight);        }        repaintChanged();        break;    default: {            unsigned char ascii = e->text().length() ? e->text().unicode()->latin1() : 0;            if (e->text().length() &&                (!(e->state() & Qt::ControlButton) &&#ifndef Q_OS_MAC                  !(e->state() & Qt::AltButton) &&#endif                  !(e->state() & Qt::MetaButton) ||                 (((e->state() & (Qt::ControlButton | Qt::AltButton))) == (Qt::ControlButton|Qt::AltButton))) &&                 (!ascii || ascii >= 32 || e->text() == QString(QLatin1Char('\t')))) {                clearUndoRedoInfo = false;                if (e->key() == Qt::Key_Tab) {                    if (d->tabChangesFocus) {                        e->ignore();                        break;                    }                    if (textFormat() == Qt::RichText && cursor->index() == 0                         && (cursor->paragraph()->isListItem() || cursor->paragraph()->listDepth())) {                        clearUndoRedo();                        undoRedoInfo.type = UndoRedoInfo::Style;                        undoRedoInfo.id = cursor->paragraph()->paragId();                        undoRedoInfo.eid = undoRedoInfo.id;                        undoRedoInfo.styleInformation = Q3TextStyleCommand::readStyleInformation(doc, undoRedoInfo.id, undoRedoInfo.eid);                        cursor->paragraph()->setListDepth(cursor->paragraph()->listDepth() +1);                        clearUndoRedo();                        drawCursor(false);                        repaintChanged();                        drawCursor(true);                        break;                    }                } else if (e->key() == Qt::Key_BackTab) {                    if (d->tabChangesFocus) {                        e->ignore();                        break;                    }                }                if ((autoFormatting() & AutoBulletList) &&                     textFormat() == Qt::RichText && cursor->index() == 0                     && !cursor->paragraph()->isListItem()                     && (e->text()[0] == QLatin1Char('-') || e->text()[0] == QLatin1Char('*'))) {                        clearUndoRedo();                        undoRedoInfo.type = UndoRedoInfo::Style;                        undoRedoInfo.id = cursor->paragraph()->paragId();                        undoRedoInfo.eid = undoRedoInfo.id;                        undoRedoInfo.styleInformation = Q3TextStyleCommand::readStyleInformation(doc, undoRedoInfo.id, undoRedoInfo.eid);                        setParagType(Q3StyleSheetItem::DisplayListItem, Q3StyleSheetItem::ListDisc);                        clearUndoRedo();                        drawCursor(false);                        repaintChanged();                        drawCursor(true);                        break;                }		if (overWrite && !cursor->atParagEnd() && !doc->hasSelection(Q3TextDocument::Standard)) {                    doKeyboardAction(ActionDelete);                    clearUndoRedoInfo = false;                }                QString t = e->text();                insert(t, true, false);                break;            } else if (e->state() & Qt::ControlButton) {                switch (e->key()) {                case Qt::Key_C: case Qt::Key_F16: // Copy key on Sun keyboards                    copy();                    break;                case Qt::Key_V:                    paste();                    break;                case Qt::Key_X:                    cut();                    break;                case Qt::Key_I: case Qt::Key_T: case Qt::Key_Tab:                    if (!d->tabChangesFocus)                        indent();                    break;                case Qt::Key_A:#if defined(Q_WS_X11)                    moveCursor(MoveLineStart, e->state() & Qt::ShiftButton);#else                    selectAll(true);#endif                    break;                case Qt::Key_B:                    moveCursor(MoveBackward, e->state() & Qt::ShiftButton);                    break;                case Qt::Key_F:                    moveCursor(MoveForward, e->state() & Qt::ShiftButton);                    break;                case Qt::Key_D:                    if (doc->hasSelection(Q3TextDocument::Standard)) {                        removeSelectedText();                        break;                    }                    doKeyboardAction(ActionDelete);                    clearUndoRedoInfo = false;                    break;                case Qt::Key_H:                    if (doc->hasSelection(Q3TextDocument::Standard)) {                        removeSelectedText();                        break;                    }                    if (!cursor->paragraph()->prev() &&                         cursor->atParagStart())                        break;                    doKeyboardAction(ActionBackspace);                    clearUndoRedoInfo = false;                    break;                case Qt::Key_E:                    moveCursor(MoveLineEnd, e->state() & Qt::ShiftButton);                    break;                case Qt::Key_N:                    moveCursor(MoveDown, e->state() & Qt::ShiftButton);                    break;                case Qt::Key_P:                    moveCursor(MoveUp, e->state() & Qt::ShiftButton);                    break;                case Qt::Key_Z:                    if(e->state() & Qt::ShiftButton)                        redo();                    else                        undo();                    break;                case Qt::Key_Y:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -