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

📄 textedit.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************** Copyright (C) 2004-2007 Trolltech ASA. All rights reserved.**** This file is part of the demonstration applications of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://trolltech.com/products/qt/licenses/licensing/opensource/**** If you are unsure which license is appropriate for your use, please** review the following information:** http://trolltech.com/products/qt/licenses/licensing/licensingoverview** or contact the sales department at sales@trolltech.com.**** In addition, as a special exception, Trolltech gives you certain** additional rights. These rights are described in the Trolltech GPL** Exception version 1.0, which can be found at** http://www.trolltech.com/products/qt/gplexception/ and in the file** GPL_EXCEPTION.txt in this package.**** In addition, as a special exception, Trolltech, as the sole copyright** holder for Qt Designer, grants users of the Qt/Eclipse Integration** plug-in the right for the Qt/Eclipse Integration to link to** functionality provided by Qt Designer and its related libraries.**** Trolltech reserves all rights not expressly granted herein.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#include "textedit.h"#include "printpreview.h"#include <QAction>#include <QApplication>#include <QClipboard>#include <QColorDialog>#include <QComboBox>#include <QFontComboBox>#include <QFile>#include <QFileDialog>#include <QFileInfo>#include <QFontDatabase>#include <QMenu>#include <QMenuBar>#include <QPrintDialog>#include <QPrinter>#include <QTextCodec>#include <QTextEdit>#include <QToolBar>#include <QTextCursor>#include <QTextList>#include <QtDebug>#include <QCloseEvent>#include <QMessageBox>#ifdef Q_WS_MACconst QString rsrcPath = ":/images/mac";#elseconst QString rsrcPath = ":/images/win";#endifTextEdit::TextEdit(QWidget *parent)    : QMainWindow(parent){    setupFileActions();    setupEditActions();    setupTextActions();    {        QMenu *helpMenu = new QMenu(tr("Help"), this);        menuBar()->addMenu(helpMenu);        helpMenu->addAction(tr("About"), this, SLOT(about()));         helpMenu->addAction(tr("About &Qt"), qApp, SLOT(aboutQt()));    }    textEdit = new QTextEdit(this);    connect(textEdit, SIGNAL(currentCharFormatChanged(const QTextCharFormat &)),            this, SLOT(currentCharFormatChanged(const QTextCharFormat &)));    connect(textEdit, SIGNAL(cursorPositionChanged()),            this, SLOT(cursorPositionChanged()));    setCentralWidget(textEdit);    textEdit->setFocus();    setCurrentFileName(QString());    fontChanged(textEdit->font());    colorChanged(textEdit->textColor());    alignmentChanged(textEdit->alignment());    connect(textEdit->document(), SIGNAL(modificationChanged(bool)),            actionSave, SLOT(setEnabled(bool)));    connect(textEdit->document(), SIGNAL(modificationChanged(bool)),            this, SLOT(setWindowModified(bool)));    connect(textEdit->document(), SIGNAL(undoAvailable(bool)),            actionUndo, SLOT(setEnabled(bool)));    connect(textEdit->document(), SIGNAL(redoAvailable(bool)),            actionRedo, SLOT(setEnabled(bool)));    setWindowModified(textEdit->document()->isModified());    actionSave->setEnabled(textEdit->document()->isModified());    actionUndo->setEnabled(textEdit->document()->isUndoAvailable());    actionRedo->setEnabled(textEdit->document()->isRedoAvailable());    connect(actionUndo, SIGNAL(triggered()), textEdit, SLOT(undo()));    connect(actionRedo, SIGNAL(triggered()), textEdit, SLOT(redo()));    actionCut->setEnabled(false);    actionCopy->setEnabled(false);    connect(actionCut, SIGNAL(triggered()), textEdit, SLOT(cut()));    connect(actionCopy, SIGNAL(triggered()), textEdit, SLOT(copy()));    connect(actionPaste, SIGNAL(triggered()), textEdit, SLOT(paste()));    connect(textEdit, SIGNAL(copyAvailable(bool)), actionCut, SLOT(setEnabled(bool)));    connect(textEdit, SIGNAL(copyAvailable(bool)), actionCopy, SLOT(setEnabled(bool)));    connect(QApplication::clipboard(), SIGNAL(dataChanged()), this, SLOT(clipboardDataChanged()));    QString initialFile = ":/example.html";    const QStringList args = QCoreApplication::arguments();    if (args.count() == 2)        initialFile = args.at(1);    if (!load(initialFile))        fileNew();}void TextEdit::closeEvent(QCloseEvent *e){    if (maybeSave())        e->accept();    else        e->ignore();}void TextEdit::setupFileActions(){    QToolBar *tb = new QToolBar(this);    tb->setWindowTitle(tr("File Actions"));    addToolBar(tb);    QMenu *menu = new QMenu(tr("&File"), this);    menuBar()->addMenu(menu);    QAction *a;    a = new QAction(QIcon(rsrcPath + "/filenew.png"), tr("&New"), this);    a->setShortcut(QKeySequence::New);    connect(a, SIGNAL(triggered()), this, SLOT(fileNew()));    tb->addAction(a);    menu->addAction(a);    a = new QAction(QIcon(rsrcPath + "/fileopen.png"), tr("&Open..."), this);    a->setShortcut(QKeySequence::Open);    connect(a, SIGNAL(triggered()), this, SLOT(fileOpen()));    tb->addAction(a);    menu->addAction(a);    menu->addSeparator();    actionSave = a = new QAction(QIcon(rsrcPath + "/filesave.png"), tr("&Save"), this);    a->setShortcut(QKeySequence::Save);    connect(a, SIGNAL(triggered()), this, SLOT(fileSave()));    a->setEnabled(false);    tb->addAction(a);    menu->addAction(a);    a = new QAction(tr("Save &As..."), this);    connect(a, SIGNAL(triggered()), this, SLOT(fileSaveAs()));    menu->addAction(a);    menu->addSeparator();    a = new QAction(QIcon(rsrcPath + "/fileprint.png"), tr("&Print..."), this);    a->setShortcut(QKeySequence::Print);    connect(a, SIGNAL(triggered()), this, SLOT(filePrint()));    tb->addAction(a);    menu->addAction(a);    a = new QAction(QIcon(rsrcPath + "/fileprint.png"), tr("Print Preview..."), this);    connect(a, SIGNAL(triggered()), this, SLOT(filePrintPreview()));    menu->addAction(a);    a = new QAction(QIcon(rsrcPath + "/exportpdf.png"), tr("&Export PDF..."), this);    a->setShortcut(Qt::CTRL + Qt::Key_D);    connect(a, SIGNAL(triggered()), this, SLOT(filePrintPdf()));    tb->addAction(a);    menu->addAction(a);    menu->addSeparator();    a = new QAction(tr("&Quit"), this);    a->setShortcut(Qt::CTRL + Qt::Key_Q);    connect(a, SIGNAL(triggered()), this, SLOT(close()));    menu->addAction(a);}void TextEdit::setupEditActions(){    QToolBar *tb = new QToolBar(this);    tb->setWindowTitle(tr("Edit Actions"));    addToolBar(tb);    QMenu *menu = new QMenu(tr("&Edit"), this);    menuBar()->addMenu(menu);    QAction *a;    a = actionUndo = new QAction(QIcon(rsrcPath + "/editundo.png"), tr("&Undo"), this);    a->setShortcut(QKeySequence::Undo);    tb->addAction(a);    menu->addAction(a);    a = actionRedo = new QAction(QIcon(rsrcPath + "/editredo.png"), tr("&Redo"), this);    a->setShortcut(QKeySequence::Redo);    tb->addAction(a);    menu->addAction(a);    menu->addSeparator();    a = actionCut = new QAction(QIcon(rsrcPath + "/editcut.png"), tr("Cu&t"), this);    a->setShortcut(QKeySequence::Cut);    tb->addAction(a);    menu->addAction(a);    a = actionCopy = new QAction(QIcon(rsrcPath + "/editcopy.png"), tr("&Copy"), this);    a->setShortcut(QKeySequence::Copy);    tb->addAction(a);    menu->addAction(a);    a = actionPaste = new QAction(QIcon(rsrcPath + "/editpaste.png"), tr("&Paste"), this);    a->setShortcut(QKeySequence::Paste);    tb->addAction(a);    menu->addAction(a);    actionPaste->setEnabled(!QApplication::clipboard()->text().isEmpty());}void TextEdit::setupTextActions(){    QToolBar *tb = new QToolBar(this);    tb->setWindowTitle(tr("Format Actions"));    addToolBar(tb);    QMenu *menu = new QMenu(tr("F&ormat"), this);    menuBar()->addMenu(menu);    actionTextBold = new QAction(QIcon(rsrcPath + "/textbold.png"), tr("&Bold"), this);    actionTextBold->setShortcut(Qt::CTRL + Qt::Key_B);    QFont bold;    bold.setBold(true);    actionTextBold->setFont(bold);    connect(actionTextBold, SIGNAL(triggered()), this, SLOT(textBold()));    tb->addAction(actionTextBold);    menu->addAction(actionTextBold);    actionTextBold->setCheckable(true);    actionTextItalic = new QAction(QIcon(rsrcPath + "/textitalic.png"), tr("&Italic"), this);    actionTextItalic->setShortcut(Qt::CTRL + Qt::Key_I);    QFont italic;    italic.setItalic(true);    actionTextItalic->setFont(italic);    connect(actionTextItalic, SIGNAL(triggered()), this, SLOT(textItalic()));    tb->addAction(actionTextItalic);    menu->addAction(actionTextItalic);    actionTextItalic->setCheckable(true);    actionTextUnderline = new QAction(QIcon(rsrcPath + "/textunder.png"), tr("&Underline"), this);    actionTextUnderline->setShortcut(Qt::CTRL + Qt::Key_U);    QFont underline;    underline.setUnderline(true);    actionTextUnderline->setFont(underline);    connect(actionTextUnderline, SIGNAL(triggered()), this, SLOT(textUnderline()));    tb->addAction(actionTextUnderline);    menu->addAction(actionTextUnderline);    actionTextUnderline->setCheckable(true);    menu->addSeparator();    QActionGroup *grp = new QActionGroup(this);    connect(grp, SIGNAL(triggered(QAction *)), this, SLOT(textAlign(QAction *)));    actionAlignLeft = new QAction(QIcon(rsrcPath + "/textleft.png"), tr("&Left"), grp);    actionAlignLeft->setShortcut(Qt::CTRL + Qt::Key_L);    actionAlignLeft->setCheckable(true);    actionAlignCenter = new QAction(QIcon(rsrcPath + "/textcenter.png"), tr("C&enter"), grp);    actionAlignCenter->setShortcut(Qt::CTRL + Qt::Key_E);    actionAlignCenter->setCheckable(true);    actionAlignRight = new QAction(QIcon(rsrcPath + "/textright.png"), tr("&Right"), grp);    actionAlignRight->setShortcut(Qt::CTRL + Qt::Key_R);    actionAlignRight->setCheckable(true);    actionAlignJustify = new QAction(QIcon(rsrcPath + "/textjustify.png"), tr("&Justify"), grp);    actionAlignJustify->setShortcut(Qt::CTRL + Qt::Key_J);    actionAlignJustify->setCheckable(true);    tb->addActions(grp->actions());    menu->addActions(grp->actions());    menu->addSeparator();    QPixmap pix(16, 16);    pix.fill(Qt::black);    actionTextColor = new QAction(pix, tr("&Color..."), this);    connect(actionTextColor, SIGNAL(triggered()), this, SLOT(textColor()));    tb->addAction(actionTextColor);    menu->addAction(actionTextColor);    tb = new QToolBar(this);    tb->setAllowedAreas(Qt::TopToolBarArea | Qt::BottomToolBarArea);    tb->setWindowTitle(tr("Format Actions"));    addToolBarBreak(Qt::TopToolBarArea);    addToolBar(tb);    comboStyle = new QComboBox(tb);    tb->addWidget(comboStyle);    comboStyle->addItem("Standard");    comboStyle->addItem("Bullet List (Disc)");    comboStyle->addItem("Bullet List (Circle)");    comboStyle->addItem("Bullet List (Square)");    comboStyle->addItem("Ordered List (Decimal)");    comboStyle->addItem("Ordered List (Alpha lower)");    comboStyle->addItem("Ordered List (Alpha upper)");    connect(comboStyle, SIGNAL(activated(int)),            this, SLOT(textStyle(int)));    comboFont = new QFontComboBox(tb);    tb->addWidget(comboFont);    connect(comboFont, SIGNAL(activated(const QString &)),            this, SLOT(textFamily(const QString &)));

⌨️ 快捷键说明

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