Qt - WPS文本编辑器(WPS新建文档)

本文档介绍了如何使用Qt5和C++实现WPS文本编辑器的新建文档功能,详细阐述了功能实现过程,并提供了具体代码示例,经过测试已成功运行。
摘要由CSDN通过智能技术生成

WPS新建文档 - 功能实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

具体代码

在这里插入图片描述

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

在这里插入图片描述

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    void initMainWindow();
    void docNew();

private slots:
    void on_newAction_triggered();

private:
    void formatEnabled();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

在这里插入图片描述

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "childwnd.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    initMainWindow();
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::initMainWindow()
{
    //初始化字号列表项
    QFontDatabase fontdb;
    foreach(int fontsize, fontdb.standardSizes())
    {
        ui->sizeComboBox->addItem(QString::number(fontsize));
    }

    QFont defFont;    //当前应用程序默认的字体
    QString sFontSize;
    int defFontSize;  //当前应用程序默认字体的字号
    int defFontindex; //当前字号在组合框中的索引号

    defFont = QApplication::font();
    defFontSize = defFont.pointSize();
    sFontSize = QString::number(defFontSize);
    defFontindex = ui->sizeComboBox->findText(sFontSize);

    ui->sizeComboBox->setCurrentIndex(defFontindex);
}

void MainWindow::docNew()
{
    ChildWnd *childwnd = new ChildWnd;
    ui->mdiArea->addSubWindow(childwnd);
    connect(childwnd, SIGNAL(copyAvailable(bool)), ui->cutAction, SLOT(setEnabled(bool)));
    connect(childwnd, SIGNAL(copyAvailable(bool)), ui->copyAction, SLOT(setEnabled(bool)));

    childwnd->newDoc();
    childwnd->show();
    formatEnabled();
}

void MainWindow::formatEnabled()
{
    ui->boldAction->setEnabled(true);
    ui->italicAction->setEnabled(true);
    ui->underlineAction->setEnabled(true);
    ui->leftAlignAction->setEnabled(true);
    ui->centerAction->setEnabled(true);
    ui->rightlignAction->setEnabled(true);
    ui->justifyAction->setEnabled(true);
    ui->colorAction->setEnabled(true);
}

void MainWindow::on_newAction_triggered()
{
    docNew();
}

在这里插入图片描述

#ifndef CHILDWND_H
#define CHILDWND_H
#include <QTextEdit>

class ChildWnd : public QTextEdit
{
    Q_OBJECT
public:
    ChildWnd();
    QString m_CurDocPath;    //当前文档路径
    void newDoc();           //新建文档
    QString getCurDocName(); //文档路径中提取文档名

public slots:
    void docBeModified();    //文档修改时,窗口的标题栏加'*'

private:
    bool m_bSaved; //文档是否保存
};

#endif // CHILDWND_H

在这里插入图片描述

#include "childwnd.h"
#include <QFileInfo>

ChildWnd::ChildWnd()
{
    //子窗口关闭时销毁该类的实例对象
    setAttribute(Qt::WA_DeleteOnClose);

    m_bSaved = false;
}

void ChildWnd::newDoc()
{
    static int wndSeqNum = 1 ;
    m_CurDocPath = QString("WPS 文档%1").arg(wndSeqNum++) ;
    //设置窗体标题,文档改动后名称后加"*"号标识
    setWindowTitle(m_CurDocPath + "[*]" + " - MyWPS") ;
    connect(document(), SIGNAL(contentsChanged()), this, SLOT(docBeModified()));
}

QString ChildWnd::getCurDocName()
{
    return QFileInfo(m_CurDocPath).fileName();
}

void ChildWnd::docBeModified()
{
    setWindowModified(document()->isModified());
}

测试ok

结语:

时间: 2020-08-05

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值