基于QT的文本编辑器程序源代码.docx

上传人:b****5 文档编号:8574219 上传时间:2023-01-31 格式:DOCX 页数:22 大小:19.74KB
下载 相关 举报
基于QT的文本编辑器程序源代码.docx_第1页
第1页 / 共22页
基于QT的文本编辑器程序源代码.docx_第2页
第2页 / 共22页
基于QT的文本编辑器程序源代码.docx_第3页
第3页 / 共22页
基于QT的文本编辑器程序源代码.docx_第4页
第4页 / 共22页
基于QT的文本编辑器程序源代码.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

基于QT的文本编辑器程序源代码.docx

《基于QT的文本编辑器程序源代码.docx》由会员分享,可在线阅读,更多相关《基于QT的文本编辑器程序源代码.docx(22页珍藏版)》请在冰豆网上搜索。

基于QT的文本编辑器程序源代码.docx

基于QT的文本编辑器程序源代码

附录

文本编辑器代码

textedit.pro

TEMPLATE=app

TARGET=textedit

CONFIG+=qtwarn_on

HEADERS=textedit.h

SOURCES=textedit.cpp\

main.cpp

RESOURCES+=textedit.qrc

build_all:

!

build_pass{

CONFIG-=build_all

CONFIG+=release

}

#install

target.path=$$[QT_INSTALL_DEMOS]/textedit

sources.files=$$SOURCES$$HEADERS$$RESOURCES*.pro*.html*.docimages

sources.path=$$[QT_INSTALL_DEMOS]/textedit

INSTALLS+=targetsources

textedit.h

#ifndefTEXTEDIT_H

#defineTEXTEDIT_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)

classTextEdit:

publicQMainWindow

{

Q_OBJECT

public:

TextEdit(QWidget*parent=0);

protected:

virtualvoidcloseEvent(QCloseEvent*e);

private:

voidsetupFileActions();

voidsetupEditActions();

voidsetupTextActions();

boolload(constQString&f);

boolmaybeSave();

voidsetCurrentFileName(constQString&fileName);

privateslots:

voidfileNew();

voidfileOpen();

boolfileSave();

boolfileSaveAs();

voidfilePrint();

voidfilePrintPreview();

voidfilePrintPdf();

voidtextBold();

voidtextUnderline();

voidtextItalic();

voidtextFamily(constQString&f);

voidtextSize(constQString&p);

voidtextStyle(intstyleIndex);

voidtextColor();

voidtextAlign(QAction*a);

voidcurrentCharFormatChanged(constQTextCharFormat&format);

voidcursorPositionChanged();

voidclipboardDataChanged();

voidabout();

voidprintPreview(QPrinter*);

private:

voidmergeFormatOnWordOrSelection(constQTextCharFormat&format);

voidfontChanged(constQFont&f);

voidcolorChanged(constQColor&c);

voidalignmentChanged(Qt:

:

Alignmenta);

QAction*actionSave,

*actionTextBold,

*actionTextUnderline,

*actionTextItalic,

*actionTextColor,

*actionAlignLeft,

*actionAlignCenter,

*actionAlignRight,

*actionAlignJustify,

*actionUndo,

*actionRedo,

*actionCut,

*actionCopy,

*actionPaste;

QComboBox*comboStyle;

QFontComboBox*comboFont;

QComboBox*comboSize;

QToolBar*tb;

QStringfileName;

QTextEdit*textEdit;

};

#endif

main.cpp

#include"textedit.h"

#include

intmain(intargc,char**argv)

{

Q_INIT_RESOURCE(textedit);

QApplicationa(argc,argv);

TextEditmw;

mw.resize(700,800);

mw.show();

returna.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

#ifdefQ_WS_MAC

constQStringrsrcPath=":

/images/mac";

#else

constQStringrsrcPath=":

/images/win";

#endif

TextEdit:

:

TextEdit(QWidget*parent)

:

QMainWindow(parent)

{

this->setWindowTitle(QString("文本编辑器"));

QTextCodec:

:

setCodecForCStrings(QTextCodec:

:

codecForName("UTF-8"));

setupFileActions();

setupEditActions();

setupTextActions();

{

QMenu*helpMenu=newQMenu("帮助",this);

menuBar()->addMenu(helpMenu);

helpMenu->addAction("关于",this,SLOT(about()));

helpMenu->addAction("关于&Qt",qApp,SLOT(aboutQt()));

}

textEdit=newQTextEdit(this);

connect(textEdit,SIGNAL(currentCharFormatChanged(constQTextCharFormat&)),

this,SLOT(currentCharFormatChanged(constQTextCharFormat&)));

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()));

QStringinitialFile="文本编辑器";

constQStringListargs=QCoreApplication:

:

arguments();

if(args.count()==2)

initialFile=args.at

(1);

if(!

load(initialFile))

fileNew();

}

voidTextEdit:

:

closeEvent(QCloseEvent*e)

{

if(maybeSave())

e->accept();

else

e->ignore();

}

voidTextEdit:

:

setupFileActions()

{

QToolBar*tb=newQToolBar(this);

tb->setWindowTitle(tr("FileActions"));

addToolBar(tb);

QMenu*menu=newQMenu("&文件",this);

menuBar()->addMenu(menu);

QAction*a;

a=newQAction(QIcon(rsrcPath+"/filenew.png"),"&新建",this);

a->setShortcut(QKeySequence:

:

New);

connect(a,SIGNAL(triggered()),this,SLOT(fileNew()));

tb->addAction(a);

menu->addAction(a);

a=newQAction(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=newQAction(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=newQAction("&另存为.",this);

connect(a,SIGNAL(triggered()),this,SLOT(fileSaveAs()));

menu->addAction(a);

menu->addSeparator();

a=newQAction(QIcon(rsrcPath+"/fileprint.png"),"&打印",this);

a->setShortcut(QKeySequence:

:

Print);

connect(a,SIGNAL(triggered()),this,SLOT(filePrint()));

tb->addAction(a);

menu->addAction(a);

a=newQAction(QIcon(rsrcPath+"/fileprint.png"),"&打印预览",this);

connect(a,SIGNAL(triggered()),this,SLOT(filePrintPreview()));

menu->addAction(a);

a=newQAction(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=newQAction("&退出",this);

a->setShortcut(Qt:

:

CTRL+Qt:

:

Key_Q);

connect(a,SIGNAL(triggered()),this,SLOT(close()));

menu->addAction(a);

}

voidTextEdit:

:

setupEditActions()

{

QToolBar*tb=newQToolBar(this);

tb->setWindowTitle(tr("EditActions"));

addToolBar(tb);

QMenu*menu=newQMenu("&编辑",this);

menuBar()->addMenu(menu);

QAction*a;

a=actionUndo=newQAction(QIcon(rsrcPath+"/editundo.png"),"&撤销",this);

a->setShortcut(QKeySequence:

:

Undo);

tb->addAction(a);

menu->addAction(a);

a=actionRedo=newQAction(QIcon(rsrcPath+"/editredo.png"),"&恢复",this);

a->setShortcut(QKeySequence:

:

Redo);

tb->addAction(a);

menu->addAction(a);

menu->addSeparator();

a=actionCut=newQAction(QIcon(rsrcPath+"/editcut.png"),"&剪切",this);

a->setShortcut(QKeySequence:

:

Cut);

tb->addAction(a);

menu->addAction(a);

a=actionCopy=newQAction(QIcon(rsrcPath+"/editcopy.png"),"&复制",this);

a->setShortcut(QKeySequence:

:

Copy);

tb->addAction(a);

menu->addAction(a);

a=actionPaste=newQAction(QIcon(rsrcPath+"/editpaste.png"),"&粘贴",this);

a->setShortcut(QKeySequence:

:

Paste);

tb->addAction(a);

menu->addAction(a);

actionPaste->setEnabled(!

QApplication:

:

clipboard()->text().isEmpty());

}

voidTextEdit:

:

setupTextActions()

{

QToolBar*tb=newQToolBar(this);

tb->setWindowTitle(tr("FormatActions"));

addToolBar(tb);

QMenu*menu=newQMenu("&格式",this);

menuBar()->addMenu(menu);

actionTextBold=newQAction(QIcon(rsrcPath+"/textbold.png"),"&加粗",this);

actionTextBold->setShortcut(Qt:

:

CTRL+Qt:

:

Key_B);

QFontbold;

bold.setBold(true);

actionTextBold->setFont(bold);

connect(actionTextBold,SIGNAL(triggered()),this,SLOT(textBold()));

tb->addAction(actionTextBold);

menu->addAction(actionTextBold);

actionTextBold->setCheckable(true);

actionTextItalic=newQAction(QIcon(rsrcPath+"/textitalic.png"),"&斜体",this);

actionTextItalic->setShortcut(Qt:

:

CTRL+Qt:

:

Key_I);

QFontitalic;

italic.setItalic(true);

actionTextItalic->setFont(italic);

connect(actionTextItalic,SIGNAL(triggered()),this,SLOT(textItalic()));

tb->addAction(actionTextItalic);

menu->addAction(actionTextItalic);

actionTextItalic->setCheckable(true);

actionTextUnderline=newQAction(QIcon(rsrcPath+"/textunder.png"),"&下划线",this);

actionTextUnderline->setShortcut(Qt:

:

CTRL+Qt:

:

Key_U);

QFontunderline;

underline.setUnderline(true);

actionTextUnderline->setFont(underline);

connect(actionTextUnderline,SIGNAL(triggered()),this,SLOT(te

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1