c++&qt_day10

作业1

题目

完成文本编辑器写入

效果
请添加图片描述
代码

widget.h


#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QFontDialog>
#include <QMessageBox>
#include <QColorDialog>
#include <QFileDialog>
#include <QDebug>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget

{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

widget.cpp



#include "widget.h"
#include "ui_widget.h"


Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    // 字体按钮
    connect(ui->fontBtn,&QPushButton::clicked,this,[&](){
        bool ok;  // 返回是否选中字体
        QFont font = QFontDialog::getFont(
                &ok, // 是否选中字体
                QFont("幼圆",20,10,false), // 初始字体
                this,       // 父组件
                "选择字体"); // 对话框标题
        if (ok) {
            ui->textEdit->setCurrentFont(font);
        } else {
            QMessageBox::information(this,"提示","没有选择字体");
        }
    });

    // 颜色对话框
    connect(ui->colorBtn,&QPushButton::clicked,this,[&](){
        QColor color = QColorDialog::getColor(
                QColor(58,61,62),
                this,
                "选择颜色");

        if (color.isValid()) {
           ui->textEdit->setTextColor(color); // 设置前景色
//           ui->textEdit->setTextBackgroundColor(color);// 设置背景色
        } else {
            QMessageBox::information(this,"提示","没有选择颜色");
        }
    });


    // 文件打开对话框
    connect(ui->openBtn,&QPushButton::clicked,this,[&](){
        QString fileName = QFileDialog::getOpenFileName(
            this,  // 父组件
            tr("打开文件"), // 其实路径
            "D:/user/documents",  // 起始路径
            tr( // 过滤器
               "Text (*.txt *.md *.doc);;"
               "All (*)"
            )
        );

        QFile file(fileName);
        // 打开文件
        if(!file.open(QIODevice::ReadOnly)){
            return;
        }

        // 读取数据 (8位字符数组)
        QByteArray buf = file.readAll();

        // 数据展示到ui界面
        ui->textEdit->setText(QString(buf)); // 将qbtearray转换成qstring

        // 关闭文件
        file.close();
    });

    // 文件另存为对话框
    connect(ui->saveBtn,&QPushButton::clicked,this,[&](){
        QString fileName = QFileDialog::getSaveFileName(
            this,  // 父组件
            tr("保存文件"), // 其实路径
            "D:/user/documents",  // 起始路径
            tr( // 过滤器
                "Text (*.txt *.md *.doc);;"
                "All (*)"
            )
         );

        if(!fileName.isEmpty()){

            QFile file(fileName);

            // 开
            if(file.open(QIODevice::WriteOnly)){
                return;
            }

            // 写
            QByteArray buf = ui->textEdit->toPlainText().toUtf8();
            file.write(buf);

            // 关
            file.close();
        }

    });
}

Widget::~Widget()
{
    delete ui;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值