QT QMainWindow类文本编辑器的编写

本文档介绍了如何使用QT的QMainWindow类来创建一个文本编辑器,包括图片和文档的设计,以及菜单栏、工具栏和快捷键的编写过程。虽然部分工具栏按钮图片未设置,但已展示了基本的功能和布局。
摘要由CSDN通过智能技术生成

程序

图片和文档的设计

//showWidget.h
#ifndef SHOWWIDGET_H
#define SHOWWIDGET_H

#include <QWidget>
#include <QLabel>
#include <QTextEdit>
#include <QImage>

class ShowWidget : public QWidget
{
   
    Q_OBJECT
public:
    explicit ShowWidget(QWidget *parent = nullptr);
    QImage img;
    QLabel *imageLabel;
    QTextEdit *text;

signals:

public slots:
};

#endif // SHOWWIDGET_H
//showWidget.cpp
#include "showwidget.h"
#include <QHBoxLayout>

ShowWidget::ShowWidget(QWidget *parent) : QWidget(parent)
{
   
    imageLabel=new QLabel;
    imageLabel->setScaledContents(true);
    text=new QTextEdit;
    QHBoxLayout *mainLayout=new QHBoxLayout(this);
    mainLayout->addWidget(imageLabel);
    mainLayout->addWidget(text);
}

菜单栏、工具栏、快捷键的编写

//imageprocessor.h
#ifndef IMAGEPROCESSOR_H
#define IMAGEPROCESSOR_H

#include <QMainWindow>
#include <QImage>
#include <QLabel>
#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QComboBox>
#include <QSpinBox>
#include <QToolBar>
#include <QFontComboBox>
#include <QToolButton>
#include <QTextCharFormat>
#include "showwidget.h"

class ImageProcessor : public QMainWindow
{
   
    Q_OBJECT

public:
    ImageProcessor(QWidget *parent = 0);
    ~ImageProcessor();
    void createActions();//创建动作
    void createMenus();//创建菜单
    void createToolBars();//创建工具栏
    void loadFile(QString filename);
    void mergeFormat(QTextCharFormat);
private:
    //菜单栏
    QMenu *fileMenu;
    QMenu *zoomMenu;
    QMenu *rotateMenu;
    QMenu *mirrorMenu;
    QImage img;
    QString fileName;
    ShowWidget *showWidget;
    //文件菜单项
    QAction *openFileAction;
    QAction *NewFileAction;
    QAction *PrintTextAction;
    QAction *PrintImageAction;
    QAction *exitAction;
    //编辑菜单项
    QAction *copyAction;
    QAction *cutAction;
    QAction *pasteAction;
    QAction *aboutAction;
    QAction *zoonInAction;
    QAction *zoonOutAction;
    //旋转菜单项
    QAction *rotate90Action;
    QAction *rotate180Action;
    QAction *rotate270Action;
    //镜像菜单栏
    QAction *mirrorVerticalAction;
    QAction *mirrorHorizontalAction;
    QAction *undoAction;
    QAction *redoAction;
    //工具栏
    QToolBar *fileTool;
    QToolBar *zoomTool;
    QToolBar *rotateTool;
    QToolBar *mirrorTool;
    QToolBar *doToolBar;
protected slots:
    void ShowNewFile();
    void ShowOpenFile();
    void ShowPrintText();
    void ShowPrintImage();
    void showzoonIn();
    void showzoonOut();
    void ShowRotate90();
    void ShowRotate180();
    void ShowRotate270();
    void showMirrorVertical();
    void showMirrorHorizontal();
    void ShowFontComboBox(QString comboStr);
    void ShowSizeSpinBox(QString spinValue);
    void ShowBoldBtn();
    void ShowItalicBtn();
    void ShowUnderlineBtn();
    void ShowColorBtn();
    void ShowCurrentFormatChanged(const QTextCharFormat &fmt);
    void ShowList(int);
    void ShowAlignment(QAction *act);
    void ShowCursorPositionChanged();

private:
    QLabel *fontLabel1;
    QFontComboBox *fontComboBox;
    QLabel *fontLabel2;
    QComboBox *sizeComboBox;
    QToolButton *boldBtn;
    QToolButton *italicBtn;
    QToolButton *underlineBtn;
    QToolButton *colorBtn;
    QToolBar *fontToolBar;
    QLabel *listLabel;
    QComboBox *listComboBox;
    QActionGroup *actGrp;
    QAction*leftAction;
    QAction*rightAction;
    QAction*centerAction;
    QAction*justifyAction;
    QToolBar *listToolBar;
};

#endif // IMAGEPROCESSOR_H

//imageprocessor.cpp
#include "imageprocessor.h"
#include <QMessageBox>
#include <QFileDialog>
#include <QFile>
#include <QTextStream>
#include <QPrintDialog>
#include <QPrinter>
#include <QPainter>
#include <QColorDialog>
#include <QTextList>

ImageProcessor::ImageProcessor(QWidget *parent)
    : QMainWindow(parent)
{
   
    setWindowTitle("Easy Word");
    showWidget=new ShowWidget(this);
    setCentralWidget(showWidget);
    fontLabel1=new QLabel("字体");
    fontComboBox =new QFontComboBox;
    fontComboBox->setFontFilters(QFontComboBox::ScalableFonts);//过滤字体可缩放字体
    fontLabel2=new QLabel("字号");
    sizeComboBox=new QComboBox;
    QFontDatabase db;//所有可用的字体字号本例只用到字号
    foreach (int size,db.standardSizes())//返回可用的标准字号的列表
        sizeComboBox->addItem(QString::number(size));
    boldBtn=new QToolButton;
    boldBtn->setText("bold");
    boldBtn->setIcon(QIcon("bold.png"));
    boldBtn->setCheckable(true);
    italicBtn=new QToolButton;
    italicBtn->setText("italic");
    italicBtn->setIcon(QIcon("italic.png"));
    italicBtn->setCheckable(true);
    underlineBtn=new QToolButton;
    underlineBtn->setText("underline");
    underlineBtn->setIcon(QIcon("underline.png"));
    underlineBtn->setCheckable(true);
    colorBtn=new QToolButton;
    colorBtn->setText("color");
    colorBtn->setIcon(QIcon("color.png"));
    colorBtn->setCheckable(true);
    listLabel=new QLabel("排序");
    listComboBox=new QComboBox;
    listComboBox->addItem("Standard");
    listComboBox->addItem("QTextListFormat::ListDisc");
    listComboBox->addItem("QTextListFormat::ListCircle");
    listComboBox->addItem(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值