#include "mainwindow.h"
#include "showwidget.h"
#include <QApplication>
#include <QToolBar>
#include <QFileDialog>
#include <QTextStream>
#include <QtPrintSupport/QPrinter>
#include <QtPrintSupport/QPrintDialog>
#include <QPainter>
#include <QRect>
#include <QSize>
#include <QGraphicsItem>
#include <QColorDialog>
#include <QColor>
#include <QAction>
#include <QTextList>
#include <QTextBlockFormat>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
setWindowTitle(tr("Easy Word"));
showWidget = new ShowWidget(this);
setCentralWidget(showWidget);
fontLabel1 = new QLabel(tr("字体: "));
fontComboBox = new QFontComboBox;
fontComboBox->setFontFilters(QFontComboBox::ScalableFonts);
fontLabel2 = new QLabel(tr("字号: "));
sizeComboBox = new QComboBox;
QFontDatabase db;
foreach (int size ,db.standardSizes())
{
sizeComboBox->addItem(QString::number(size));
}
boldBtn = new QToolButton;
boldBtn->setIcon(QIcon("bold.png"));
boldBtn->setCheckable(true);
italicBtn = new QToolButton;
italicBtn->setIcon(QIcon("italic.png"));
italicBtn->setCheckable(true);
underlineBtn = new QToolButton;
underlineBtn->setIcon(QIcon("underline.png"));
underlineBtn->setCheckable(true);
colorBtn = new QToolButton;
colorBtn->setIcon(QIcon("color.png"));
colorBtn->setCheckable(true);
//文字排版功能
listLabel = new QLabel(tr("排序"));
listComboBox = new QComboBox;
listComboBox->addItem("Standard");
listComboBox->addItem("QTextListFormat::ListDisc");
listComboBox->addItem("QTextListFormat::ListCircle");
listComboBox->addItem("QTextListFormat::ListSquare");
listComboBox->addItem("QTextListFormat::ListDecimal");
listComboBox->addItem("QTextListFormat::ListLowerAlpha");
listComboBox->addItem("QTextListFormat::ListUpperAlpha");
listComboBox->addItem("QTextListFormat::ListLowerRoman");
listComboBox->addItem("QTextListFormat::ListUpperRoman");
createActions();
createMenus();
createToolBars();
if(img.load("image.png"))
{
showWidget->imageLabel->setPixmap(QPixmap::fromImage(img));
}
//各字体设置相关功能的信号与槽
connect(fontComboBox,SIGNAL(activated(QString)),this,SLOT(showFontComboBox(QString)));
connect(sizeComboBox,SIGNAL(activated(QString)),this,SLOT(showSizeSpinBix(QString)));
connect(boldBtn,SIGNAL(clicked(bool)),this,SLOT(showBoldBtn()));
connect(italicBtn,SIGNAL(clicked(bool)),this,SLOT(showItalicBtn()));
connect(underlineBtn,SIGNAL(clicked(bool)),this,SLOT(showUnderlineBtn()));
connect(colorBtn,SIGNAL(clicked(bool)),this,SLOT(showColorBtn()));
connect(showWidget->text,SIGNAL(currentCharFormatChanged(QTextCharFormat &)),this,SLOT(showCurrentFormatChanged(QTextCharFormat &)));
// //文字排版功能的信号与槽
// connect(listComboBox,SIGNAL(activated(int)),this,SLOT(showList(int)));
// connect(showWidget->text->document(),SIGNAL(undoAvailable(bool)),redoAction,SLOT(setEnabled(bool)));
// connect(showWidget->text->document(),SIGNAL(redoAvailable(bool)),redoAction,SLOT(setEnabled(bool)));
// connect(showWidget->text,SIGNAL(cursorPositionChanged()),this,SLOT(showCursorPositionChanged()));
connect(listComboBox,SIGNAL(activated(int)),this,SLOT(showList(int)));
connect(showWidget->text->document(),SIGNAL(undoAvailable(bool)),redoAction,SLOT(setEnabled(bool)));
connect(showWidget->text->document(),SIGNAL(redoAvailable(bool)),redoAction,SLOT(setEnabled(bool)));
connect(showWidget->text,SIGNAL(cursorPositionChanged()),this,SLOT(showCursorPositionChanged()));
}
void MainWindow::createActions()
{
//“打开”动作
openFileAction = new QAction(QIcon("open.png") , tr("打开") , this);
openFileAction->setShortcut(tr("Ctrl + O"));
openFileAction->setStatusTip(tr("打开一个文件"));
connect(openFileAction,SIGNAL(triggered(bool)),this,SLOT(showOpenFile()));
//“新建”动作
newFileAction = new QAction(QIcon("new.png") , tr("新建") ,this );
newFileAction->setShortcut(tr("Ctrl + N"));
newFileAction->setStatusTip(tr("新建一个文件"));
connect(newFileAction,SIGNAL(triggered()),this,SLOT(showNewFile()));
//"退出"动作
exitAction = new QAction(tr("退出"), this);
exitAction->setShortcut(tr("Ctrl + Q"));
exitAction->setStatusTip(tr("退出程序"));
connect(exitAction,SIGNAL(triggered(bool)),this,SLOT(close()));
//"复制"动作
copyAction = new QAction(QIcon("copy.png") , tr("复制") , this);
copyAction->setShortcut(tr("Ctrl + C"));
copyAction->setStatusTip(tr("复制文件"));
connect(copyAction,SIGNAL(triggered(bool)),showWidget->text,SLOT(copy()));
//剪切操作
cutAction = new QAction(QIcon("cut.png") , tr("剪切") ,this);
cutAction->setShortcut(tr("Ctrl + X"));
cutAction->setStatusTip(tr("剪切文件"));
connect(cutAction,SIGNAL(triggered(bool)),showWidget->text,SLOT(cut()));
//粘贴操作
pasteAction = new QAction(QIcon("paste.png") , tr("粘贴") ,this);
pasteAction->setShortcut(tr("Ctrl + V"));
pasteAction->setStatusTip(tr("粘贴文件"));
connect(pasteAction,SIGNAL(triggered(bool)),showWidget->text,SLOT(paste()));
//“关于”操作
aboutAction = new QAction(tr("关于") ,this);
connect(aboutAction, SIGNAL(triggered(bool)),this, SLOT(Qapplication::aboutQt()));
//打印文本
printTextAction = new QAction(QIcon("printText.png") , tr("打印文本") ,this);
printTextAction->setStatusTip(tr("打印一个文本"));
connect(printTextAction,SIGNAL(triggered(bool)),this,SLOT(showPrintText()));
//打印图片
printImageAction = new QAction(QIcon("printImage.png") , tr("打印图像") , this);
printImageAction->setStatusTip(tr("打印一幅图像"));
connect(printImageAction,SIGNAL(triggered(bool)),this,SLOT(showPrintImage()));
//放大图片
zoomInAction = new QAction(QIcon("zoomin.png") , tr("放大") ,this);
zoomInAction->setStatusTip(tr("放大一张图片"));
connect(zoomInAction,SIGNAL(triggered(bool)),this,SLOT(showZoomIn()));
//缩小图片
zoomOutAction = new QAction(QIcon("zoomout.png") ,tr("缩小") ,this);
zoomOutAction->setStatusTip(tr("缩小一张图片"));
connect(zoomOutAction,SIGNAL(triggered(bool)),this,SLOT(showZoomOut()));
//旋转图片
rotate90Action = new QAction(QIcon("rotate90.png") , tr("旋转90") ,this);
rotate90Action->setStatusTip(tr("将一幅图旋转90度"));
connect(rotate90Action,SIGNAL(triggered(bool)),this,SLOT(showRotate90()));
rotate180Action = new QAction(QIcon("rotate180.png") ,tr("旋转180") ,this);
rotate180Action->setStatusTip(tr("将一幅图片旋转180度"));
connect(rotate180Action,SIGNAL(triggered(bool)),this,SLOT(showRotate180()));
rotate270Action = new QAction(QIcon("rotate270.png"), tr("旋转270") ,this);
rotate270Action->setStatusTip(tr("将一幅图片旋转270度"));
connect(rotate270Action,SIGNAL(triggered(bool)),this,SLOT(showRotate270()));
//垂直镜像
mirrorVerticalAction = new QAction(QIcon("mirrorVertical.png") , tr("纵向镜像") ,this);
mirrorVerticalAction->setStatusTip(tr("对一张图片做纵向镜像"));
connect(mirrorVerticalAction,SIGNAL(triggered(bool)),this,SLOT(showMirrorVertical()));
//水平镜像
mirrorHorizontalAction = new QAction(QIcon("mirrorHorizontal.png") ,tr("横向镜像") ,this);
mirrorHorizontalAction->setStatusTip(tr("对一张图