#include "editormainwindow.h" #include "ui_editormainwindow.h" #include <QFileDialog> #include <QMessageBox> #include <QTextStream> #include <QFile> EditorMainWindow::EditorMainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::EditorMainWindow) { ui->setupUi(this); setCentralWidget(ui->m_edit);//设置m_edit为中心组件
//设计工具栏 ui->toolBar->addSeparator();//在工具栏后面加分隔符
//字体大小 ui->toolBar->addWidget(new QLabel("字体大小:"));//在状态栏加一个标签 m_spinFontSize = new QSpinBox;//创建一个 改变大小的框 m_spinFontSize->setMinimumWidth(60);//设置框的最小的大小 m_spinFontSize->setRange(8,72);//设置里面数字的范围 ui->toolBar->addWidget(m_spinFontSize);//把框放在工具栏中
//字体名称 ui->toolBar->addWidget(new QLabel("字体名称:"));//在工具栏中添加一个 标签 m_combFontName = new QFontComboBox;//创建一个关于设置字体的控件 m_combFontName->setMinimumWidth(80);//设置这个控件的最小大小 ui->toolBar->addWidget(m_combFontName);//把关于字体的控件放到工具栏
//设计状态栏 m_labelCurFile = new QLabel("当前文件:");//创建一个标签 m_labelCurFile->setMinimumWidth(400);//设置标签大小的最小大小 ui->statusbar->addWidget(m_labelCurFile);//把标签放在状态栏
//信号和槽连接 //字体组合框发信号 connect(m_combFontName,SIGNAL(currentIndexChanged(QString)),this, SLOT(on_m_combFontName_currentIndexChanged(QString))); //字体框发信号 connect(m_spinFontSize,SIGNAL(valueChanged(int)),this, SLOT(on_m_spinFontSize_valueChanged(int))); }
EditorMainWindow::~EditorMainWindow(){delete ui;}
//新建 void EditorMainWindow::on_m_actNew_triggered(){}
//打开 void EditorMainWindow::on_m_actOpen_triggered() { QString fileName = QFileDialog::getOpenFileName(this, QObject::tr("文件夹"),"./", QObject::tr("*.txt"));//打开当前路径下的对话框 if(!fileName.isNull()){//判断文件不是空 QFile file(fileName);//QFile类提供了一个读取和写入文件的接口 if(file.open(QIODevice::ReadWrite)){ QTextStream textStream(&file); textStream.setCodec("UTF-8");//把输出的东西改为文本方式输出 ui->m_edit->setPlainText(textStream.readAll()); file.close(); } } }
//保存按钮槽函数 void EditorMainWindow::on_actionbaocun_triggered() { }
//另存为按钮槽函数 void EditorMainWindow::on_m_actConserve_triggered() { //获取保存路径和自己起的文件名 QString fileName; fileName = QFileDialog::getSaveFileName(this, tr("保存文件"),"./",tr("Text files(*.txt)")); //创建并打开文件 QFile file(fileName);//创建文件 file.open(QIODevice::WriteOnly | QIODevice::Text);//打开文件 //向文件中写入数据 QTextStream out(&file); out<<ui->m_edit->toPlainText(); file.close(); }
//粗体,参数真加粗 假不加粗 void EditorMainWindow::on_m_actBold_triggered(bool checked) { QTextCharFormat fmt;//保存字节格式 fmt.setFontWeight(checked?QFont::Bold : QFont::Normal); ui->m_edit->mergeCurrentCharFormat(fmt);//选中的文字加粗 } //斜体 void EditorMainWindow::on_m_actltalic_triggered(bool checked) { QTextCharFormat fmt;//保存字节格式 fmt.setFontItalic(checked); ui->m_edit->mergeCurrentCharFormat(fmt);//选中的文字斜体 }
//下划线 void EditorMainWindow::on_m_actUnderline_triggered(bool checked) { QTextCharFormat fmt;//保存字节格式 fmt.setFontUnderline(checked); ui->m_edit->mergeCurrentCharFormat(fmt);//选中的文字下划线 }
//工具栏 //checked 选中 显示 未选中 隐藏 void EditorMainWindow::on_m_actToolbar_triggered(bool checked) { ui->toolBar->setHidden(!checked); }
//状态栏 //checked 选中 显示 未选中 隐藏 void EditorMainWindow::on_m_actStatusbar_triggered(bool checked) { ui->statusbar->setHidden(!checked); }
//关于 void EditorMainWindow::on_m_actAbout_triggered() { QMessageBox::information(this,windowTitle(),"自己找解决办法"); }
//文本框 是否可复制 什么时候控件里的文字可以复制 void EditorMainWindow::on_m_edit_copyAvailable(bool b) { ui->m_actCopy->setEnabled(b); ui->m_actCut->setEnabled(b); }
//文本框 文本变化 //每次文本发生改变 都要去判断是否可以清空 void EditorMainWindow::on_m_edit_textChanged() { ui->m_actClear->setEnabled( ui->m_edit->toPlainText().size()); }
//文本框 选中可改变 void EditorMainWindow::on_m_edit_selectionChanged() { QFont font = ui->m_edit->currentFont(); ui->m_actBold->setChecked(font.bold()); ui->m_actltalic->setChecked(font.italic()); ui->m_actUnderline->setChecked(font.underline()); m_combFontName->setCurrentFont(font); m_spinFontSize->setValue(font.pointSize()); }
//字体的改变 void EditorMainWindow::on_m_combFontName_currentIndexChanged(const QString &fontname) { QTextCharFormat fmt; fmt = ui->m_edit->currentCharFormat(); fmt.setFontFamily(fontname); ui->m_edit->mergeCurrentCharFormat(fmt); }
//字号大小的改变 参数就是spinbox的数字 void EditorMainWindow::on_m_spinFontSize_valueChanged(int fontSize) { QTextCharFormat fmt; fmt = ui->m_edit->currentCharFormat(); fmt.setFontPointSize(fontSize);//设置字号 ui->m_edit->mergeCurrentCharFormat(fmt); }