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