




免费预览已结束,剩余19页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
太原工业学院毕业设计附录 文本编辑器代码 TEMPLATE = appTARGET = texteditCONFIG += qt warn_onHEADERS = textedit.hSOURCES = textedit.cpp main.cppRESOURCES += textedit.qrcbuild_all:!build_pass CONFIG -= build_all CONFIG += release# installtarget.path = $QT_INSTALL_DEMOS/texteditsources.files = $SOURCES $HEADERS $RESOURCES *.pro *.html *.doc imagessources.path = $QT_INSTALL_DEMOS/texteditINSTALLS += target sources textedit.h#ifndef TEXTEDIT_H#define TEXTEDIT_H#include #include #include QT_FORWARD_DECLARE_CLASS(QAction)QT_FORWARD_DECLARE_CLASS(QComboBox)QT_FORWARD_DECLARE_CLASS(QFontComboBox)QT_FORWARD_DECLARE_CLASS(QTextEdit)QT_FORWARD_DECLARE_CLASS(QTextCharFormat)QT_FORWARD_DECLARE_CLASS(QMenu)class TextEdit : public QMainWindow Q_OBJECTpublic: TextEdit(QWidget *parent = 0);protected: virtual void closeEvent(QCloseEvent *e);private: void setupFileActions(); void setupEditActions(); void setupTextActions(); bool load(const QString &f); bool maybeSave(); void setCurrentFileName(const QString &fileName);private slots: void fileNew(); void fileOpen(); bool fileSave(); bool fileSaveAs(); void filePrint(); void filePrintPreview(); void filePrintPdf(); void textBold(); void textUnderline(); void textItalic(); void textFamily(const QString &f); void textSize(const QString &p); void textStyle(int styleIndex); void textColor(); void textAlign(QAction *a); void currentCharFormatChanged(const QTextCharFormat &format); void cursorPositionChanged(); void clipboardDataChanged(); void about(); void printPreview(QPrinter *);private: void mergeFormatOnWordOrSelection(const QTextCharFormat &format); void fontChanged(const QFont &f); void colorChanged(const QColor &c); void alignmentChanged(Qt:Alignment a); QAction *actionSave, *actionTextBold, *actionTextUnderline, *actionTextItalic, *actionTextColor, *actionAlignLeft, *actionAlignCenter, *actionAlignRight, *actionAlignJustify, *actionUndo, *actionRedo, *actionCut, *actionCopy, *actionPaste; QComboBox *comboStyle; QFontComboBox *comboFont; QComboBox *comboSize; QToolBar *tb; QString fileName; QTextEdit *textEdit;#endif main.cpp#include textedit.h#include int main( int argc, char * argv ) Q_INIT_RESOURCE(textedit); QApplication a( argc, argv ); TextEdit mw; mw.resize( 700, 800 ); mw.show(); return a.exec(); textedit.cpp#include textedit.h#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef Q_WS_MACconst QString rsrcPath = :/images/mac;#elseconst QString rsrcPath = :/images/win;#endifTextEdit:TextEdit(QWidget *parent) : QMainWindow(parent) this-setWindowTitle(QString(文本编辑器); QTextCodec:setCodecForCStrings(QTextCodec:codecForName(UTF-8); setupFileActions(); setupEditActions(); setupTextActions(); QMenu *helpMenu = new QMenu(帮助, this); menuBar()-addMenu(helpMenu); helpMenu-addAction(关于, this, SLOT(about(); helpMenu-addAction(关于 &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 = 文本编辑器; 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(&文件, this); menuBar()-addMenu(menu); QAction *a; a = new QAction(QIcon(rsrcPath + /filenew.png), &新建, 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), &打开, 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), &保存, this); a-setShortcut(QKeySequence:Save); connect(a, SIGNAL(triggered(), this, SLOT(fileSave(); a-setEnabled(false); tb-addAction(a); menu-addAction(a); a = new QAction(&另存为., this); connect(a, SIGNAL(triggered(), this, SLOT(fileSaveAs(); menu-addAction(a); menu-addSeparator(); a = new QAction(QIcon(rsrcPath + /fileprint.png), &打印, 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), &打印预览, this); connect(a, SIGNAL(triggered(), this, SLOT(filePrintPreview(); menu-addAction(a); a = new QAction(QIcon(rsrcPath + /exportpdf.png), &转换为 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(&退出, 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(&编辑, this); menuBar()-addMenu(menu); QAction *a; a = actionUndo = new QAction(QIcon(rsrcPath + /editundo.png),&撤销, this); a-setShortcut(QKeySequence:Undo); tb-addAction(a); menu-addAction(a); a = actionRedo = new QAction(QIcon(rsrcPath + /editredo.png), &恢复, this); a-setShortcut(QKeySequence:Redo); tb-addAction(a); menu-addAction(a); menu-addSeparator(); a = actionCut = new QAction(QIcon(rsrcPath + /editcut.png), &剪切, this); a-setShortcut(QKeySequence:Cut); tb-addAction(a); menu-addAction(a); a = actionCopy = new QAction(QIcon(rsrcPath + /editcopy.png), &复制, this); a-setShortcut(QKeySequence:Copy); tb-addAction(a); menu-addAction(a); a = actionPaste = new QAction(QIcon(rsrcPath + /editpaste.png), &粘贴, 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(&格式, this); menuBar()-addMenu(menu); actionTextBold = new QAction(QIcon(rsrcPath + /textbold.png), &加粗, 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), &斜体, 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), &下划线, 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), &左对齐, grp); actionAlignLeft-setShortcut(Qt:CTRL + Qt:Key_L); actionAlignLeft-setCheckable(true); actionAlignCenter = new QAction(QIcon(rsrcPath + /textcenter.png), &中间对齐, grp); actionAlignCenter-setShortcut(Qt:CTRL + Qt:Key_E); actionAlignCenter-setCheckable(true); actionAlignRight = new QAction(QIcon(rsrcPath + /textright.png), &右对齐, grp); actionAlignRight-setShortcut(Qt:CTRL + Qt:Key_R); actionAlignRight-setCheckable(true); actionAlignJustify = new QAction(QIcon(rsrcPath + /textjustify.png), &整理, 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, &字体颜色., 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 &); 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), 文件尚未保存,是否保存?, QMessageBox:Yes | QMessageBox:No | QMessageBox:Cancel); if (ret = QMessageBox:Yes) 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 = 我的文本编辑器; else shownName = QFileInfo(fileName).fileName(); setWindowTitle(tr(%1*).arg(shownName); setWindowModified(false);void TextEdit:fileNew() if (maybeSave() textEdit-clear(); setCurrentFileName(QString(); void TextEdit:fileOpen() QString fn = QFileDialog:getOpenFileName(this, tr(Open File.), QString(), tr(TXT-Files (*.txt);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 document()-toHtml(UTF-8); textEdit-document()-setModified(false); return true;bool TextEdit:fileSaveAs() QString fn = QFileDialog:getSaveFileName(this, tr(Save as.), QString(), tr(TXT-Files (*.txt);All Files (*); if (fn.isEmpty() return false; setCurrentFileName(fn); return fileSave();void TextEdit:filePrint()#ifndef QT_NO_PRINTER QPrinter printer(QPrinter:HighResolution); 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;#endifvoid TextEdit:filePrintPreview()#ifndef QT_NO_PRINTER QPrinter printer(QPrinter:HighResolution); QPrintPreviewDialog preview(&printer, this); connect(&preview, SIGNAL(paintRequested(QPrinter *), SLOT(printPreview(QPrinter *); preview.exec();#endifvoid TextEdit:printPreview(QPrinter *printer)#ifdef QT_NO_PRINTER Q_UNUSED(printer);#else textEdit-print(printer);#endifvoid TextEdit:filePrintPdf()#ifndef QT_NO_PRINTER/! 0 QString fileName = QFileDialog:getSaveFileName(this, 转换为 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-do
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 劳动仲裁合同十篇
- 食品微生物检验技术试题库及答案
- 2025年事业单位工勤技能-湖北-湖北计算机信息处理员一级高级技师历年参考题库含答案解析
- 2025年事业单位工勤技能-湖北-湖北动物检疫员四级(中级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-海南-海南管道工三级(高级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-海南-海南林木种苗工五级(初级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-海南-海南假肢制作装配工五级(初级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-河南-河南图书资料员一级(高级技师)历年参考题库含答案解析
- 2024版挂靠出租车出租合同
- 2025年事业单位工勤技能-江西-江西水利机械运行维护工二级(技师)历年参考题库含答案解析(5套)
- 深圳流动摊贩管理办法
- 《如何治理小金库》课件
- 协及医院老年综合评估表格
- 精选青少版新概念1B-unit1课件
- 高二英语词汇表(含音标、分单元)
- b737培训课件49-6章apu滑油本是针对飞机737CL机型级的概述
- 邮政储汇业务员高级技师理论知识试卷5套(完整版)
- 英语四级词汇大全
- 压力性尿失禁
- SB/T 10029-2012新鲜蔬菜分类与代码
- 居家适老化改造需求评估表
评论
0/150
提交评论