9.19号作业
2> 完成文本编辑器的保存工作
widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QFontDialog>
#include <QFont>
#include <QMessageBox>
#include <QDebug>
#include <QColorDialog>
#include <QColor>
#include <QFileDialog>
#include <QFile>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_ziti_clicked();void on_color_clicked();void on_open_clicked();void on_baocun_clicked();private:Ui::Widget *ui;
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}void Widget::on_ziti_clicked()
{bool ok; //返回用户是否选中字体QFont f=QFontDialog::getFont(&ok,QFont("隶书",10,10,false),this,"选择字体");//对OK进行判断,判断用户是否选中字体了if(ok){//用户选中可以使用,该字体// ui->textEdit->setFont(f); //只能设置全部文字字体ui->textEdit->setCurrentFont(f); //设置选中的字体//ui->textEdit->setFontItacil(true); //倾斜选中的字}else{//QMessageBox::information(this,"取消","用户取消了字体");}
}void Widget::on_color_clicked()
{QColor c=QColorDialog::getColor(QColor("green"),this,"选择颜色");if(c.isValid()){//用户选择的颜色//将用户选择的颜色作用到文本上//ui->textEdit->setTextColor(c); //设置字体颜色ui->textEdit->setTextBackgroundColor(c);}else {QMessageBox::information(this,"取消","用户取消了颜色");}}void Widget::on_open_clicked()
{//QString fileName=QFileDialog::getOpenFileName(this,"选择文件","./","ALL(*.*);;Images(* . png *.xpm*.jpg);;Text file (*.txt)");if(fileName.isNull()){QMessageBox::information(this,"提示","用户取消了选择文件");return ;}qDebug()<<fileName;//文件操作//1.实例化一个对象QFile file(fileName);//2.打开文件if(!file.isOpen()){//if(!file.open(QFile::ReadWrite)){QMessageBox::critical(this,"失败","文件打开失败");return ;}}//3.读写操作QByteArray msg=file.readAll();//4.关闭文件file.close();//将读取的文本展示在ui界面ui->textEdit->setText(msg);}void Widget::on_baocun_clicked()
{QString fileName=QFileDialog::getSaveFileName(this,"选择文件","./","ALL(*.*);;Images(* . png *.xpm*.jpg);;Text file (*.txt)");if(fileName.isNull()){QMessageBox::information(this,"提示","用户取消了选择文件");return ;}qDebug()<<fileName;//实例化一个对象QFile file(fileName);if(!file.isOpen()){//if(!file.open(QFile::ReadWrite)){QMessageBox::critical(this,"失败","文件打开失败");return ;}QString msg1=ui->textEdit->toPlainText();file.write(msg1.toLocal8Bit());}else {QMessageBox::information(this,"","文件保存失败");}}

widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QTimerEvent>
#include <QTime>
#include <QLineEdit>
#include <QDebug>
#include <QTextToSpeech> //文本转语音类
#include<QVoice>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();void timerEvent(QTimerEvent *e) override;private slots:void on_pushButton_clicked();void on_pushButton_2_clicked();private:Ui::Widget *ui;int timer_id; //定时器的id号//定义一个播报员QTextToSpeech *speecher;
};
#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);//给播报员实例化空间speecher = new QTextToSpeech(this);ui->QtextEdit->insertPlainText("早岁哪知世事\n仍许飞鸿荡人间\n千磨万击心铸铁\n殚精竭虑铸一剑");
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked()
{timer_id = this->startTimer(1000);//功能:启动一个定时器//参数:超时时间,每隔给定的时间后,自动调用定时器事件处理函数//返回值:当前定时器的id号
}
//定时器事件处理函数
void Widget::timerEvent(QTimerEvent *e)
{if(e->timerId() == timer_id) //说明定时器1到位{QTime sys_t = QTime::currentTime(); //获取系统时间//将QTime类对象转换为字符串QString t = sys_t.toString("hh:mm:ss");//展示到ui界面ui->QLabeltime->setText(t);if(t==ui->QLineEdit->text()){speecher->say(ui->QtextEdit->toPlainText());}}
}
void Widget::on_pushButton_2_clicked()
{this->killTimer(timer_id); //关闭给定的定时器
}
main.cpp
#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}
3.思维导图

相关文章:
9.19号作业
2> 完成文本编辑器的保存工作 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QFontDialog> #include <QFont> #include <QMessageBox> #include <QDebug> #include <QColorDialog> #include <QColor&g…...
Mybatis学习笔记9 动态SQL
Mybatis学习笔记8 查询返回专题_biubiubiu0706的博客-CSDN博客 动态SQL的业务场景: 例如 批量删除 get请求 uri?id18&id19&id20 或者post id18&id19&id20 String[] idsrequest.getParameterValues("id") 那么这句SQL是需要动态的 还…...
element表格 和后台联调
1.配置接口 projectList:/api/goods/xxx,//产品列表2.请求接口(get请求默认参数page) // 产品列表 pageprojectList(params){return axios.get(base.projectList,{params})}3.获取数据 直接放到created里边去了 刷新页面就可以看到 async projectList(page){let res await t…...
基于SSM的智慧城市实验室主页系统的设计与实现
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用Vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...
怒赞,阿里P8推荐的Java面试宝典:41个专题PDF(史上最全+面试必备)
《尼恩Java面试宝典》 40岁老架构师 尼恩 经过对大量 Java面试题 的不断梳理、迭代, 编著成5000页的《尼恩Java面试宝典》,致力于体系化, 系统化,形象化 梳理,形成一个大的知识体系,从而帮助大家 进大厂&a…...
线程池各个参数设置说明
1. corePoolSize 核心线程数 看处理业务属于IO密集型还是属于cpu密集型IO密集型: 通常设置为N1,还有一个计算公式:线程数 cpu数*(线程等待时间/线程总的处理时间) 但是由于服务器除了这个服务可能还部署有其他服务,…...
springBoot对接多个mq并且实现延迟队列---未完待续
mq调用流程 创建消息转换器 package com.wd.config;import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; import org.springframework.amqp.support.converter.MessageConverter; import org.springframework.context.annotation.Bean; import o…...
Pytorch从零开始实战04
Pytorch从零开始实战——猴痘病识别 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——猴痘病识别环境准备数据集模型选择模型训练数据可视化其他模型图片预测 环境准备 本文基于Jupyter notebook,使用Python3.8,Pytor…...
北大C++课后记录:文件读写的I/O流
前言 文件和平常用到的cin、cout流其实是一回事,可以将文件看作一个有限字符构成的顺序字符流,基于此,也可以像cin、cout读键盘数据那样对文件进行读写。 读写指针 输入流的read指针 输出流的write指针 注:这里的指针并不是普…...
详解Linux的grep命令
2023年9月19日,周二晚上 先写这么多吧,以后有空再更新,还要一些作业没写完.... 目录 概述查看grep命令的所有选项grep的常用选项选项-i选项-v选项-n选项-c编辑选项-l组合使用 概述 grep命令在Linux系统中是一个很重要的文本搜索工具和过…...
spark6. 如何设置spark 日志
spark yarn日志全解 一.前言二.开启日志聚合是什么样的2.1 开启日志聚合MapReduce history server2.2 如何开启Spark history server 三.不开启日志聚合是什么样的四.正确使用log4j.properties 一.前言 本文只讲解再yarn 模式下的日志配置。 二.开启日志聚合是什么样的 在ya…...
glibc: strlcpy
https://zine.dev/2023/07/strlcpy-and-strlcat-added-to-glibc/ https://sourceware.org/git/?pglibc.git;acommit;h454a20c8756c9c1d55419153255fc7692b3d2199 https://linux.die.net/man/3/strlcpy https://lwn.net/Articles/612244/ 从这里看,这个strlcpy、st…...
如何在 Buildroot 中配置 Samba
在 Buildroot 中配置 Samba 在 Buildroot 中配置 Samba 可以通过以下步骤完成: 1. 进入 Buildroot 的根目录。 2. 执行 make menuconfig 命令,打开 Buildroot 的配置菜单。 3. 在配置菜单中,使用键盘导航到 "Target packages" 选…...
SSM02
SSM02 此时我们已经做好了登录模块接下来可以做一下学生管理系统的增删改查操作 首先,我们应当有一个登录成功后的主界面 在webapp下新建 1.main.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"&…...
day3_QT
day3_QT 1、文件保存2、始终事件 -闹钟 1、文件保存 2、始终事件 -闹钟 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> #include <QTime> #include <QTextToSpeech>QT_BEGIN_NAMESPACE namespace Ui { clas…...
js-map方法中调用服务器接口
在 Array.prototype.map() 方法中调用服务器接口时,可以使用异步函数来处理。 示例: async function fetchData() {try {const response await fetch(https://api.example.com/data); // 通过 fetch 发送请求const data await response.json(); // 解…...
docker 已经配置了国内镜像源,但是拉取镜像速度还是很慢(gcr.io、quay.io、ghcr.io)
前言 国内用户在使用 docker 时,想必都遇到过镜像拉取慢的问题,那是因为 docker 默认指向的镜像下载地址是 https://hub.docker.com,服务器在国外。 网上有关配置 docker 国内镜像源的教程很多,像 腾讯、阿里、网易 等等都会提供…...
[linux(静态文件服务)] 部署vue发布后的dist网页到nginx
所以说: 1.windows下把开发好的vue工程打包为dist文件然后配置下nginx目录即可。 2.linux上不需要安装node.js环境。 3.这样子默认访问服务器ip地址,就可以打开,毕竟默认就是:80端口。...
智华计算机终端保护检查系统使用笔记
使用说明 【智华保密检查右键管理员运行后粘贴密码】—— 点击脚本更改系统时间【智华计算机终端保护检查系统】—— 打开检测软件进行保密检查 检测文件格式 .pdf .doc .docx .xls .pptx 检测时间日志 2023年9月14日A:【34:03秒】2023年9月14日B:【…...
前端面试话术集锦第 15 篇:高频考点(React常考进阶知识点)
这是记录前端面试的话术集锦第十五篇博文——高频考点(React常考进阶知识点),我会不断更新该博文。❗❗❗ 1. HOC 是什么?相比 mixins 有什么优点? 很多人看到高阶组件(HOC)这个概念就被吓到了,认为这东西很难,其实这东西概念真的很简单,我们先来看一个例子: func…...
终极指南:用FanControl轻松掌控Windows电脑风扇,告别噪音烦恼
终极指南:用FanControl轻松掌控Windows电脑风扇,告别噪音烦恼 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/…...
如何高效扩展WinDirStat:自定义清理操作和视图开发完全指南
如何高效扩展WinDirStat:自定义清理操作和视图开发完全指南 【免费下载链接】windirstat WinDirStat is a disk usage statistics viewer and cleanup tool for Microsoft Windows 项目地址: https://gitcode.com/gh_mirrors/wi/windirstat WinDirStat是一款…...
避震不是“越硬越好”:拆解阻尼、弹簧与预载的黄金三角法则
在改装领域,“避震越硬操控越好”几乎成了一条默认的“铁律”。不少玩家升级绞牙避震后,第一反应就是将阻尼旋钮拧至紧,以“颠”为荣,仿佛不如此便无法体现硬核姿态。但Cornerspeed必须指出一个被长期忽视的工程事实:刚…...
从‘主仆’到‘边沿’:一个硬件工程师眼中的触发器进化史,以及为什么主从结构今天依然值得学
从机械钟摆到量子比特:触发器技术演进中的工程智慧 在数字电路的世界里,触发器如同精密的时间齿轮,默默协调着信息流动的节奏。当我们回溯这段技术发展史,会发现每一次触发器结构的革新都不是偶然的灵感闪现,而是工程…...
CANN昇腾算子开发套件
SetSingleOutputShape 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://g…...
【c++面向对象编程】第3篇:类与对象(二):构造函数与析构函数
目录 一、一个让人头疼的问题 二、构造函数:对象出生时的“第一声啼哭” 1. 最基本的构造函数 2. 带参数的构造函数(重载) 3. 初始化列表:更高效的初始化方式 三、默认构造函数:那个“看不见”的函数 四、析构函…...
数字信号处理实战:从零极点图到系统特性分析
1. 零极点图:数字信号处理的"X光片" 第一次接触零极点图时,我完全不明白这些散落在复平面上的小圆圈和叉叉有什么用。直到有次调试音频滤波器,当我把一个极点的位置向单位圆外移动了0.1,喇叭里立刻传出刺耳的啸叫声——…...
家庭Kubernetes场景下的Helm Chart优化实践与部署指南
1. 项目概述与核心价值 如果你和我一样,在家庭实验室里运行着一个Kubernetes集群,那么你肯定对Helm这个“包管理器”又爱又恨。爱的是它能让应用的部署和管理变得声明式和可重复,恨的是很多时候,那些来自大型官方仓库的“通用”H…...
Godot任务系统设计:数据驱动与事件驱动的游戏任务框架
1. 项目概述:为Godot游戏注入灵魂的“任务系统”如果你用Godot引擎做过游戏,尤其是RPG、冒险或者任何需要引导玩家推进流程的类型,你肯定琢磨过一件事:怎么搞一个靠谱的任务系统?是硬编码一堆if-else判断任务状态&…...
AI时代DevSecOps脚手架:5分钟构建安全合规的React+Supabase应用
1. 项目概述:一个为AI编码时代量身定制的DevSecOps启动器 如果你和我一样,经常用 Cursor、Lovable 这类 AI 编程工具快速构建应用原型,那你肯定遇到过这个痛点:项目跑起来了,功能也实现了,但当你准备把它变…...
