QT文本编辑器小案例

如果有需要了解功能实现细节可到( https://github.com/ihatetheworld7/sconance/tree/master/文本编辑器 )  查看完整代码

界面如下

(一)窗体内容显示区域设计

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

 (二)菜单设计

void ImageProcessor::createMenus()
{
    fileMenu=menuBar()->addMenu("文件");
    fileMenu->addAction(openFileAction);
    fileMenu->addAction(newFileAction);
    fileMenu->addAction(printTextAction);
    fileMenu->addAction(printImageAction);
    fileMenu->addSeparator();
    fileMenu->addAction(exitAction);
    zoomMenu=menuBar()->addMenu("编辑");
    zoomMenu->addAction(copyAction);
    zoomMenu->addAction(cutAction);
    zoomMenu->addAction(pasteAction);
    zoomMenu->addAction(aboutAction);
    zoomMenu->addSeparator();
    zoomMenu->addAction(zoomInAction);
    zoomMenu->addAction(zoomOutAction);
    rotateMenu=menuBar()->addMenu("旋转");
    rotateMenu->addAction(rotate90Action);
    rotateMenu->addAction(rotate180Action);
    rotateMenu->addAction(rotate270Action);
    mirrorMenu=menuBar()->addMenu("镜像");
    mirrorMenu->addAction(mirroVertiacalAction);
    mirrorMenu->addAction(mirroHorizontalAction);
}

(三)工具栏设计

void ImageProcessor::createToolBars()
{
    fileTool=addToolBar("File");
    fileTool->addAction(openFileAction);
    fileTool->addAction(newFileAction);
    fileTool->addAction(printTextAction);
    fileTool->addAction(printImageAction);

    zoomTool=addToolBar("Edit");
    zoomTool->addAction(copyAction);
    zoomTool->addAction(cutAction);
    zoomTool->addAction(pasteAction);
    zoomTool->addSeparator();
    zoomTool->addAction(zoomInAction);
    zoomTool->addAction(zoomOutAction);

    rotateTool=addToolBar("rotate");
    rotateTool->addAction(rotate90Action);
    rotateTool->addAction(rotate180Action);
    rotateTool->addAction(rotate270Action);

    doToolBar=addToolBar("doEdit");
    doToolBar->addAction(undoAction);
    doToolBar->addAction(redoAction);
    fontToolBar=addToolBar("Font");
    fontToolBar->addWidget(fontLabel1);
    fontToolBar->addWidget(fontComboBox);
    fontToolBar->addWidget(fontLabel2);
    fontToolBar->addWidget(sizeComboBox);
    fontToolBar->addSeparator();
    fontToolBar->addWidget(boldBtn);
    fontToolBar->addWidget(italicBtn);
    fontToolBar->addWidget(underlineBtn);
    fontToolBar->addSeparator();
    fontToolBar->addWidget(colorBtn);
    listToolBar=addToolBar("list");
    listToolBar->addWidget(listLabel);
    listToolBar->addWidget(listComboBox);
    listToolBar->addSeparator();
    listToolBar->addActions(actGrp->actions());
}

(四)菜单和工具栏中的功能

  openFileAction = new QAction(QIcon("D:\\Image\\打开文件.png"),("打开"),this);
    openFileAction->setShortcut(tr("Ctrl+O"));
    openFileAction->setStatusTip("打开一个文件");
    newFileAction=new QAction(QIcon("D:\\Image\\新建文件.png"),("新建"),this);
    newFileAction->setShortcut(tr("Ctrl+N"));
    newFileAction->setStatusTip("新建一个文件");
    exitAction=new QAction(("退出"),this);
    exitAction->setShortcut(tr("Ctrl+Q"));
    exitAction->setStatusTip("退出程序");
    connect(exitAction,&QAction::triggered,this,&ImageProcessor::close);
    copyAction=new QAction(QIcon("D:\\Image\\复制文件.png"),("复制"),this);
    copyAction->setShortcut(tr("Ctrl+C"));
    copyAction->setStatusTip("复制文件");
    connect(copyAction,&QAction::triggered, showWidget->text,&QTextEdit::close);
...

对于功能的实现这里就给出部分代码 

打印文件和打印图片

//打印文件
connect(printTextAction,&QAction::triggered,[=](){
        QPrinter painter;
        QPrintDialog printDialog(&painter,this);
        if(printDialog.exec())
        {
            QTextDocument *doc=showWidget->text->document();
            doc->print(&painter);
        }
    });
//打印图片
  connect(printImageAction,&QAction::triggered,[=](){
        QPrinter printer;
        QPrintDialog printDialog(&printer,this);
        if(printDialog.exec())
        {
            QPainter painter(&printer);
            QRect rect=painter.viewport();
            QSize size=img.size();
            painter.setViewport(rect.x(),rect.y(),size.width(),size.height());
            painter.setWindow(img.rect());
            painter.drawImage(0,0,img);
        }
    });

旋转90°

connect(rotate90Action,&QAction::triggered,[=](){
        if(img.isNull())
            return;
        QMatrix matrix;
        matrix.rotate(90);
        img=img.transformed(matrix);
        showWidget->imageLabel->setPixmap(QPixmap::fromImage(img));
    });

 设置字体颜色

 

QColor color=QColorDialog::getColor(Qt::red,this);
    if(color.isValid())
    {
        QTextCharFormat fmt;
        fmt.setForeground(color);
        showWidget->text->mergeCurrentCharFormat(fmt);
    }

 设置字体加粗

 

QTextCharFormat fmt;
    fmt.setFontWeight(boldBtn->isChecked()?QFont::Bold:QFont::Normal);
    showWidget->text->mergeCurrentCharFormat(fmt);

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值