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

📄 qtextcontrol.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 5 页
字号:
void QTextControl::selectAll(){    Q_D(QTextControl);    d->cursor.select(QTextCursor::Document);    d->selectionChanged();    d->cursorIsFocusIndicator = false;    emit updateRequest(QRectF(QPointF(), d->doc->documentLayout()->documentSize()));}void QTextControl::processEvent(QEvent *e, const QPointF &coordinateOffset, QWidget *contextWidget){    QMatrix m;    m.translate(coordinateOffset.x(), coordinateOffset.y());    processEvent(e, m, contextWidget);}void QTextControl::processEvent(QEvent *e, const QMatrix &matrix, QWidget *contextWidget){    Q_D(QTextControl);    if (d->interactionFlags & Qt::NoTextInteraction)        return;    d->contextWidget = contextWidget;    if (!d->contextWidget) {        switch (e->type()) {#ifndef QT_NO_GRAPHICSVIEW            case QEvent::GraphicsSceneMouseMove:            case QEvent::GraphicsSceneMousePress:            case QEvent::GraphicsSceneMouseRelease:            case QEvent::GraphicsSceneMouseDoubleClick:            case QEvent::GraphicsSceneContextMenu:            case QEvent::GraphicsSceneHoverEnter:            case QEvent::GraphicsSceneHoverMove:            case QEvent::GraphicsSceneHoverLeave:            case QEvent::GraphicsSceneHelp:            case QEvent::GraphicsSceneDragEnter:            case QEvent::GraphicsSceneDragMove:            case QEvent::GraphicsSceneDragLeave:            case QEvent::GraphicsSceneDrop: {                QGraphicsSceneEvent *ev = static_cast<QGraphicsSceneEvent *>(e);                d->contextWidget = ev->widget();                break;            }#endif // QT_NO_GRAPHICSVIEW            default: break;        };    }    switch (e->type()) {        case QEvent::KeyPress:            d->keyPressEvent(static_cast<QKeyEvent *>(e));            break;        case QEvent::MouseButtonPress: {            QMouseEvent *ev = static_cast<QMouseEvent *>(e);            d->mousePressEvent(ev->button(), matrix.map(ev->pos()), ev->modifiers(),                               ev->buttons(), ev->globalPos());            break; }        case QEvent::MouseMove: {            QMouseEvent *ev = static_cast<QMouseEvent *>(e);            d->mouseMoveEvent(ev->buttons(), matrix.map(ev->pos()));            break; }        case QEvent::MouseButtonRelease: {            QMouseEvent *ev = static_cast<QMouseEvent *>(e);            d->mouseReleaseEvent(ev->button(), matrix.map(ev->pos()));            break; }        case QEvent::MouseButtonDblClick: {            QMouseEvent *ev = static_cast<QMouseEvent *>(e);            d->mouseDoubleClickEvent(e, ev->button(), matrix.map(ev->pos()));            break; }        case QEvent::InputMethod:            d->inputMethodEvent(static_cast<QInputMethodEvent *>(e));            break;        case QEvent::ContextMenu: {            QContextMenuEvent *ev = static_cast<QContextMenuEvent *>(e);            d->contextMenuEvent(ev->globalPos(), matrix.map(ev->pos()), contextWidget);            break; }        case QEvent::FocusIn:        case QEvent::FocusOut:            d->focusEvent(static_cast<QFocusEvent *>(e));            break;        case QEvent::EnabledChange:            d->isEnabled = e->isAccepted();            break;#ifndef QT_NO_TOOLTIP        case QEvent::ToolTip: {            QHelpEvent *ev = static_cast<QHelpEvent *>(e);            d->showToolTip(ev->globalPos(), matrix.map(ev->pos()), contextWidget);            break;        }#endif // QT_NO_TOOLTIP#ifndef QT_NO_DRAGANDDROP        case QEvent::DragEnter: {            QDragEnterEvent *ev = static_cast<QDragEnterEvent *>(e);            if (d->dragEnterEvent(e, ev->mimeData()))                ev->acceptProposedAction();            break;        }        case QEvent::DragLeave:            d->dragLeaveEvent();            break;        case QEvent::DragMove: {            QDragMoveEvent *ev = static_cast<QDragMoveEvent *>(e);            if (d->dragMoveEvent(e, ev->mimeData(), matrix.map(ev->pos())))                ev->acceptProposedAction();            break;        }        case QEvent::Drop: {            QDropEvent *ev = static_cast<QDropEvent *>(e);            if (d->dropEvent(ev->mimeData(), matrix.map(ev->pos()), ev->proposedAction(), ev->source()))                ev->acceptProposedAction();            break;        }#endif#ifndef QT_NO_GRAPHICSVIEW        case QEvent::GraphicsSceneMousePress: {            QGraphicsSceneMouseEvent *ev = static_cast<QGraphicsSceneMouseEvent *>(e);            d->mousePressEvent(ev->button(), matrix.map(ev->pos()), ev->modifiers(), ev->buttons(),                               ev->screenPos());            break; }        case QEvent::GraphicsSceneMouseMove: {            QGraphicsSceneMouseEvent *ev = static_cast<QGraphicsSceneMouseEvent *>(e);            d->mouseMoveEvent(ev->buttons(), matrix.map(ev->pos()));            break; }        case QEvent::GraphicsSceneMouseRelease: {            QGraphicsSceneMouseEvent *ev = static_cast<QGraphicsSceneMouseEvent *>(e);            d->mouseReleaseEvent(ev->button(), matrix.map(ev->pos()));            break; }        case QEvent::GraphicsSceneMouseDoubleClick: {            QGraphicsSceneMouseEvent *ev = static_cast<QGraphicsSceneMouseEvent *>(e);            d->mouseDoubleClickEvent(e, ev->button(), matrix.map(ev->pos()));            break; }        case QEvent::GraphicsSceneContextMenu: {            QGraphicsSceneContextMenuEvent *ev = static_cast<QGraphicsSceneContextMenuEvent *>(e);            d->contextMenuEvent(ev->screenPos(), matrix.map(ev->pos()), contextWidget);            break; }        case QEvent::GraphicsSceneHoverMove: {            QGraphicsSceneHoverEvent *ev = static_cast<QGraphicsSceneHoverEvent *>(e);            d->mouseMoveEvent(Qt::NoButton, matrix.map(ev->pos()));            break; }        case QEvent::GraphicsSceneDragEnter: {            QGraphicsSceneDragDropEvent *ev = static_cast<QGraphicsSceneDragDropEvent *>(e);            if (d->dragEnterEvent(e, ev->mimeData()))                ev->acceptProposedAction();            break; }        case QEvent::GraphicsSceneDragLeave:            d->dragLeaveEvent();            break;        case QEvent::GraphicsSceneDragMove: {            QGraphicsSceneDragDropEvent *ev = static_cast<QGraphicsSceneDragDropEvent *>(e);            if (d->dragMoveEvent(e, ev->mimeData(), matrix.map(ev->pos())))                ev->acceptProposedAction();            break; }        case QEvent::GraphicsSceneDrop: {            QGraphicsSceneDragDropEvent *ev = static_cast<QGraphicsSceneDragDropEvent *>(e);            if (d->dropEvent(ev->mimeData(), matrix.map(ev->pos()), ev->proposedAction(), ev->source()))                ev->acceptProposedAction();            break; }#endif // QT_NO_GRAPHICSVIEW#ifdef QT_KEYPAD_NAVIGATION        case QEvent::EnterEditFocus:        case QEvent::LeaveEditFocus:            if (QApplication::keypadNavigationEnabled())                d->editFocusEvent(e);            break;#endif        case QEvent::ShortcutOverride:            if (d->interactionFlags & Qt::TextEditable) {                QKeyEvent* ke = static_cast<QKeyEvent *>(e);                if (ke->modifiers() == Qt::NoModifier                    || ke->modifiers() == Qt::ShiftModifier                    || ke->modifiers() == Qt::KeypadModifier) {                    if (ke->key() < Qt::Key_Escape) {                        ke->accept();                    } else {                        switch (ke->key()) {                            case Qt::Key_Return:                            case Qt::Key_Enter:                            case Qt::Key_Delete:                            case Qt::Key_Home:                            case Qt::Key_End:                            case Qt::Key_Backspace:                            case Qt::Key_Left:                            case Qt::Key_Right:                            ke->accept();                        default:                            break;                        }                    }#ifndef QT_NO_SHORTCUT                } else if (ke == QKeySequence::Copy                           || ke == QKeySequence::Paste                           || ke == QKeySequence::Cut                           || ke == QKeySequence::Redo                           || ke == QKeySequence::Undo                           || ke == QKeySequence::MoveToNextWord                           || ke == QKeySequence::MoveToPreviousWord                           || ke == QKeySequence::MoveToStartOfDocument                           || ke == QKeySequence::MoveToEndOfDocument                          ) {                    ke->accept();#endif                }            }            // FALL THROUGH        default:            break;    }}bool QTextControl::event(QEvent *e){    return QObject::event(e);}void QTextControl::timerEvent(QTimerEvent *e){    Q_D(QTextControl);    if (e->timerId() == d->cursorBlinkTimer.timerId()) {        d->cursorOn = !d->cursorOn;        if (d->cursor.hasSelection())            d->cursorOn &= (QApplication::style()->styleHint(QStyle::SH_BlinkCursorWhenTextSelected)                            != 0);        d->repaintCursor();    } else if (e->timerId() == d->trippleClickTimer.timerId()) {        d->trippleClickTimer.stop();    }}void QTextControl::setPlainText(const QString &text){    Q_D(QTextControl);    d->setContent(Qt::PlainText, text);}void QTextControl::setHtml(const QString &text){    Q_D(QTextControl);    d->setContent(Qt::RichText, text);}void QTextControlPrivate::keyPressEvent(QKeyEvent *e){    Q_Q(QTextControl);#ifndef QT_NO_SHORTCUT    if (e == QKeySequence::SelectAll) {            e->accept();            q->selectAll();            return;    }#ifndef QT_NO_CLIPBOARD    else if (e == QKeySequence::Copy) {            e->accept();            q->copy();            return;    }#endif#endif // QT_NO_SHORTCUT    if (interactionFlags & Qt::TextSelectableByKeyboard        && cursorMoveKeyEvent(e))        goto accept;    if (interactionFlags & Qt::LinksAccessibleByKeyboard) {        if ((e->key() == Qt::Key_Return             || e->key() == Qt::Key_Enter#ifdef QT_KEYPAD_NAVIGATION             || e->key() == Qt::Key_Select#endif             )            && cursor.hasSelection()) {            e->accept();            activateLinkUnderCursor();            return;        }    }    if (!(interactionFlags & Qt::TextEditable)) {        e->ignore();        return;    }    if (e->key() == Qt::Key_Direction_L || e->key() == Qt::Key_Direction_R) {        QTextBlockFormat fmt;        fmt.setLayoutDirection((e->key() == Qt::Key_Direction_L) ? Qt::LeftToRight : Qt::RightToLeft);        cursor.mergeBlockFormat(fmt);        goto accept;    }    // schedule a repaint of the region of the cursor, as when we move it we    // want to make sure the old cursor disappears (not noticeable when moving    // only a few pixels but noticeable when jumping between cells in tables for    // example)    repaintSelection();    if (e->key() == Qt::Key_Backspace && !(e->modifiers() & ~Qt::ShiftModifier)) {        QTextBlockFormat blockFmt = cursor.blockFormat();        QTextList *list = cursor.currentList();        if (list && cursor.atBlockStart()) {            list->remove(cursor.block());        } else if (cursor.atBlockStart() && blockFmt.indent() > 0) {            blockFmt.setIndent(blockFmt.indent() - 1);            cursor.setBlockFormat(blockFmt);        } else {            cursor.deletePreviousChar();        }        goto accept;    } else if (e->key() == Qt::Key_Enter || e->key() == Qt::Key_Return) {        if (e->modifiers() & Qt::ControlModifier)            cursor.insertText(QString(QChar::LineSeparator));        else            cursor.insertBlock();        e->accept();        goto accept;    }    if (false) {    }#ifndef QT_NO_SHORTCUT    else if (e == QKeySequence::Undo) {            q->undo();    }    else if (e == QKeySequence::Redo) {           q->redo();    }#ifndef QT_NO_CLIPBOARD    else if (e == QKeySequence::Cut) {           q->cut();    }    else if (e == QKeySequence::Paste) {           q->paste();    }#endif    else if (e == QKeySequence::Delete) {        cursor.deleteChar();    }    else if (e == QKeySequence::DeleteEndOfWord) {        cursor.movePosition(QTextCursor::EndOfWord, QTextCursor::KeepAnchor);        cursor.deleteChar();    }    else if (e == QKeySequence::DeleteStartOfWord) {        cursor.movePosition(QTextCursor::PreviousWord, QTextCursor::KeepAnchor);        cursor.deleteChar();    }    else if (e == QKeySequence::DeleteEndOfLine) {        QTextBlock block = cursor.block();        if (cursor.position() == block.position() + block.length() - 2)            cursor.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor);        else            cursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor);        cursor.deleteChar();    }#endif // QT_NO_SHORTCUT    else {        goto process;    }    goto accept;process:    {        QString text = e->text();        if (!text.isEmpty() && (text.at(0).isPrint() || text.at(0) == QLatin1Char('\t'))) {            if (overwriteMode                // no need to call deleteChar() if we have a selection, insertText                // does it already                && !cursor.hasSelection()                && !cursor.atBlockEnd())                cursor.deleteChar();            cursor.insertText(text);            selectionChanged();        } else {            e->ignore();            return;        }    } accept:    e->accept();    cursorOn = true;    q->ensureCursorVisible();    updateCurrentCharFormat();}QVariant QTextControl::loadResource(int type, const QUrl &name){#ifdef QT_NO_TEXTEDIT    Q_UNUSED(type);    Q_UNUSED(name);#else    if (QTextEdit *textEdit = qobject_cast<QTextEdit *>(parent()))

⌨️ 快捷键说明

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