QT在mainWindow窗口下实现文件打开,另存为

#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);
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值