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

📄 textedit.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    comboSize = new QComboBox(tb);    comboSize->setObjectName("comboSize");    tb->addWidget(comboSize);    comboSize->setEditable(true);    QFontDatabase db;    foreach(int size, db.standardSizes())        comboSize->addItem(QString::number(size));    connect(comboSize, SIGNAL(activated(const QString &)),            this, SLOT(textSize(const QString &)));    comboSize->setCurrentIndex(comboSize->findText(QString::number(QApplication::font()                                                                   .pointSize())));}bool TextEdit::load(const QString &f){    if (!QFile::exists(f))        return false;    QFile file(f);    if (!file.open(QFile::ReadOnly))        return false;    QByteArray data = file.readAll();    QTextCodec *codec = Qt::codecForHtml(data);    QString str = codec->toUnicode(data);    if (Qt::mightBeRichText(str)) {        textEdit->setHtml(str);    } else {        str = QString::fromLocal8Bit(data);        textEdit->setPlainText(str);    }    setCurrentFileName(f);    return true;}bool TextEdit::maybeSave(){    if (!textEdit->document()->isModified())        return true;    if (fileName.startsWith(QLatin1String(":/")))        return true;    QMessageBox::StandardButton ret;    ret = QMessageBox::warning(this, tr("Application"),                               tr("The document has been modified.\n"                                  "Do you want to save your changes?"),                               QMessageBox::Save | QMessageBox::Discard                               | QMessageBox::Cancel);    if (ret == QMessageBox::Save)        return fileSave();    else if (ret == QMessageBox::Cancel)        return false;    return true;}void TextEdit::setCurrentFileName(const QString &fileName){    this->fileName = fileName;    textEdit->document()->setModified(false);    QString shownName;    if (fileName.isEmpty())        shownName = "untitled.txt";    else        shownName = QFileInfo(fileName).fileName();    setWindowTitle(tr("%1[*] - %2").arg(shownName).arg(tr("Rich Text")));    setWindowModified(false);}void TextEdit::fileNew(){    if (maybeSave()) {        textEdit->clear();        setCurrentFileName(QString());    }}void TextEdit::fileOpen(){    QString fn = QFileDialog::getOpenFileName(this, tr("Open File..."),                                              QString(), tr("HTML-Files (*.htm *.html);;All Files (*)"));    if (!fn.isEmpty())        load(fn);}bool TextEdit::fileSave(){    if (fileName.isEmpty())        return fileSaveAs();    QFile file(fileName);    if (!file.open(QFile::WriteOnly))        return false;    QTextStream ts(&file);    ts.setCodec(QTextCodec::codecForName("UTF-8"));    ts << textEdit->document()->toHtml("UTF-8");    textEdit->document()->setModified(false);    return true;}bool TextEdit::fileSaveAs(){    QString fn = QFileDialog::getSaveFileName(this, tr("Save as..."),                                              QString(), tr("HTML-Files (*.htm *.html);;All Files (*)"));    if (fn.isEmpty())        return false;    setCurrentFileName(fn);    return fileSave();}void TextEdit::filePrint(){#ifndef QT_NO_PRINTER    QPrinter printer(QPrinter::HighResolution);    printer.setFullPage(true);    QPrintDialog *dlg = new QPrintDialog(&printer, this);    if (textEdit->textCursor().hasSelection())        dlg->addEnabledOption(QAbstractPrintDialog::PrintSelection);    dlg->setWindowTitle(tr("Print Document"));    if (dlg->exec() == QDialog::Accepted) {        textEdit->print(&printer);    }    delete dlg;#endif}void TextEdit::filePrintPreview(){    PrintPreview *preview = new PrintPreview(textEdit->document(), this);    preview->setWindowModality(Qt::WindowModal);    preview->setAttribute(Qt::WA_DeleteOnClose);    preview->show();}void TextEdit::filePrintPdf(){#ifndef QT_NO_PRINTER    QString fileName = QFileDialog::getSaveFileName(this, "Export PDF",                                                    QString(), "*.pdf");    if (!fileName.isEmpty()) {        if (QFileInfo(fileName).suffix().isEmpty())            fileName.append(".pdf");        QPrinter printer(QPrinter::HighResolution);        printer.setOutputFormat(QPrinter::PdfFormat);        printer.setOutputFileName(fileName);        textEdit->document()->print(&printer);    }#endif}void TextEdit::textBold(){    QTextCharFormat fmt;    fmt.setFontWeight(actionTextBold->isChecked() ? QFont::Bold : QFont::Normal);    mergeFormatOnWordOrSelection(fmt);}void TextEdit::textUnderline(){    QTextCharFormat fmt;    fmt.setFontUnderline(actionTextUnderline->isChecked());    mergeFormatOnWordOrSelection(fmt);}void TextEdit::textItalic(){    QTextCharFormat fmt;    fmt.setFontItalic(actionTextItalic->isChecked());    mergeFormatOnWordOrSelection(fmt);}void TextEdit::textFamily(const QString &f){    QTextCharFormat fmt;    fmt.setFontFamily(f);    mergeFormatOnWordOrSelection(fmt);}void TextEdit::textSize(const QString &p){    QTextCharFormat fmt;    fmt.setFontPointSize(p.toFloat());    mergeFormatOnWordOrSelection(fmt);}void TextEdit::textStyle(int styleIndex){    QTextCursor cursor = textEdit->textCursor();    if (styleIndex != 0) {        QTextListFormat::Style style = QTextListFormat::ListDisc;        switch (styleIndex) {            default:            case 1:                style = QTextListFormat::ListDisc;                break;            case 2:                style = QTextListFormat::ListCircle;                break;            case 3:                style = QTextListFormat::ListSquare;                break;            case 4:                style = QTextListFormat::ListDecimal;                break;            case 5:                style = QTextListFormat::ListLowerAlpha;                break;            case 6:                style = QTextListFormat::ListUpperAlpha;                break;        }        cursor.beginEditBlock();        QTextBlockFormat blockFmt = cursor.blockFormat();        QTextListFormat listFmt;        if (cursor.currentList()) {            listFmt = cursor.currentList()->format();        } else {            listFmt.setIndent(blockFmt.indent() + 1);            blockFmt.setIndent(0);            cursor.setBlockFormat(blockFmt);        }        listFmt.setStyle(style);        cursor.createList(listFmt);        cursor.endEditBlock();    } else {        // ####        QTextBlockFormat bfmt;        bfmt.setObjectIndex(-1);        cursor.mergeBlockFormat(bfmt);    }}void TextEdit::textColor(){    QColor col = QColorDialog::getColor(textEdit->textColor(), this);    if (!col.isValid())        return;    QTextCharFormat fmt;    fmt.setForeground(col);    mergeFormatOnWordOrSelection(fmt);    colorChanged(col);}void TextEdit::textAlign(QAction *a){    if (a == actionAlignLeft)        textEdit->setAlignment(Qt::AlignLeft);    else if (a == actionAlignCenter)        textEdit->setAlignment(Qt::AlignHCenter);    else if (a == actionAlignRight)        textEdit->setAlignment(Qt::AlignRight);    else if (a == actionAlignJustify)        textEdit->setAlignment(Qt::AlignJustify);}void TextEdit::currentCharFormatChanged(const QTextCharFormat &format){    fontChanged(format.font());    colorChanged(format.foreground().color());}void TextEdit::cursorPositionChanged(){    alignmentChanged(textEdit->alignment());}void TextEdit::clipboardDataChanged(){    actionPaste->setEnabled(!QApplication::clipboard()->text().isEmpty());}void TextEdit::about(){    QMessageBox::about(this, tr("About"), tr("This example demonstrates Qt's "        "rich text editing facilities in action, providing an example "        "document for you to experiment with."));}void TextEdit::mergeFormatOnWordOrSelection(const QTextCharFormat &format){    QTextCursor cursor = textEdit->textCursor();    if (!cursor.hasSelection())        cursor.select(QTextCursor::WordUnderCursor);    cursor.mergeCharFormat(format);    textEdit->mergeCurrentCharFormat(format);}void TextEdit::fontChanged(const QFont &f){    comboFont->setCurrentIndex(comboFont->findText(QFontInfo(f).family()));    comboSize->setCurrentIndex(comboSize->findText(QString::number(f.pointSize())));    actionTextBold->setChecked(f.bold());    actionTextItalic->setChecked(f.italic());    actionTextUnderline->setChecked(f.underline());}void TextEdit::colorChanged(const QColor &c){    QPixmap pix(16, 16);    pix.fill(c);    actionTextColor->setIcon(pix);}void TextEdit::alignmentChanged(Qt::Alignment a){    if (a & Qt::AlignLeft) {        actionAlignLeft->setChecked(true);    } else if (a & Qt::AlignHCenter) {        actionAlignCenter->setChecked(true);    } else if (a & Qt::AlignRight) {        actionAlignRight->setChecked(true);    } else if (a & Qt::AlignJustify) {        actionAlignJustify->setChecked(true);    }}

⌨️ 快捷键说明

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