QT--day3

news/2024/11/3 4:31:48/

2> 完成文本编辑器的保存工作

widget.cpp

#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_fontbtn_clicked()
{bool ok;//调用grtfont获取一个字体对话框QFont f=QFontDialog::getFont(&ok,QFont("隶书",10,10,false),this,"选择字体");//对OK进行判断,判断用户是否选择字体if(ok){//用户选择字体//将选中的字体,进行设置//设置全部文字字体//ui->textEdit->setFont(f);//设置选中的字体ui->textEdit->setCurrentFont(f);//设置选中字体倾斜//ui->textEdit->setFontItalic(true);}else{//用户没有选择字体QMessageBox::information(this,"取消","用户取消选择字体");}
}
//颜色按钮对应的槽函数
void Widget::on_colorbtn_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_openbtn_clicked()
{QString fileName = QFileDialog::getOpenFileName(this,"选择文件","./","ALL(*.*);;Images(*.png *.xpm *.jpg)::Text file (*.text)");//判断是否选择文件if(fileName.isNull()){QMessageBox::information(this,"提示","用户取消了选择");return;}qDebug()<<fileName;//实例化文件对象QFile file(fileName);//打开文件if(!file.isOpen()){//调用打开文件操作if(!file.open(QFile::ReadWrite)){QMessageBox::critical(this,"失败","文件打开失败");return;}}//读文件QByteArray  msg =file.readAll();//关闭文件file.close();//将读取的文件展示在UI界面ui->textEdit->setText(msg);}
//保存
void Widget::on_savebtn_clicked()
{QString fileName = QFileDialog::getSaveFileName(this,"保存文件","./","ALL(*.*);;Images(*.png *.xpm *.jpg)::Text file (*.text)");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 text =ui->textEdit->toPlainText();file.write(text.toUtf8());file.close();}

3、定时器播报

wiget.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);timer_id = this->startTimer(1000);tt=new QTextToSpeech(this);
}Widget::~Widget()
{delete ui;
}void Widget::timerEvent (QTimerEvent *e)
{if(e->timerId()==timer_id){QTime sys_t =QTime::currentTime();QString t=sys_t.toString("hh.mm");ui->label->setText(t);}else if(e->timerId()==timer_id2){QString t=ui->lineEdit->text();QString t1=ui->label->text();if(t==t1){QString a1=ui->textEdit->toPlainText();tt->say(a1);}}}
void Widget::on_pushButton_clicked()
{timer_id2 = this->startTimer(3000);
}void Widget::on_pushButton_2_clicked()
{tt->stop();this->killTimer(timer_id2);
}

wiget.h


http://www.ppmy.cn/news/1116469.html

相关文章

EM算法和VAE的学习笔记

文章目录 摘要EM算法流程EM算法对GMM的参数估计EM算法的证明EM算法的另一种理解VAE参考文献 摘要 这是我学习EM算法&#xff08;Expectation-Maximization Algorithm&#xff09;和VAE&#xff08;Variational Auto-Encoder&#xff09;的学习笔记&#xff0c;首先总结了EM算法…

删除文件夹提示已在另一程序打开,如何强制删除

该文件里的应用程序可能在占用端口&#xff0c;所以无法直接删除。 解决办法&#xff1a; 打开要删除的文件夹复制上面的路径 同时按CtrlShiftEsc打开任务管理器 点击性能找到下方的资源监视器 点击CPU 在搜索句柄里粘贴上面复制的路径 找到搜索出来的文件右键结束进程&a…

蓝桥杯嵌入式创建第一个工程(点亮led灯)

蓝桥杯嵌入式创建第一个工程&#xff08;点亮led灯&#xff09; 一.keil导入stm32G431RX板级芯片包1.1 下载板级芯片包1.2 导入芯片包1.2.1 我们首先打开keil 点击Pack installer,如图**1.2.2 然后选中file→import 如图**1.2.3 选择我们下好的芯片包即可1.2.4 确定安装成功 二…

Java手写Trie树和Trie树应用拓展案例

Java手写Trie树和Trie树应用拓展案例 1. 算法思维导图 以下是使用mermaid代码表示的Trie树的实现原理&#xff1a; #mermaid-svg-5twy24X7Wqbhyulb {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-5twy24X7Wqbhyul…

JUC并发工具使用与详情(CountDownLatch、CyclicBarrier、Semaphore、Exchanger)

JUC并发工具 一、CountDownLatch应用&源码分析 1.1 CountDownLatch介绍 CountDownLatch就是JUC包下的一个工具&#xff0c;整个工具最核心的功能就是计数器 如果有三个业务需要并行处理&#xff0c;并且需要知道三个业务全部都处理完毕了 需要一个并发安全的计数器来操…

VR全景需要加盟吗?简述VR全景加盟的意义

对于一个刚开始了解VR全景行业的新人来说&#xff0c;VR全景不是有软件、有设备、会拍摄就行了吗&#xff1f;为什么还要找全景平台进行加盟呢&#xff1f;VR全景加盟的作用又是什么呢&#xff1f;那么&#xff0c;我们就不得不多问几个问题了&#xff0c;例如不加盟的话&#…

深度剖析贪心算法:原理、优势与实战

概述 贪心算法是一种通过每一步的局部最优选择来寻找整体最优解的方法。在每个步骤中&#xff0c;贪心算法选择当前状态下的最佳选项&#xff0c;而不考虑未来可能的影响。尽管它不能保证一定能找到全局最优解&#xff0c;但贪心算法通常简单且高效&#xff0c;适用于许多实际…

Mybatis学习笔记9 动态SQL

Mybatis学习笔记8 查询返回专题_biubiubiu0706的博客-CSDN博客 动态SQL的业务场景&#xff1a; 例如 批量删除 get请求 uri?id18&id19&id20 或者post id18&id19&id20 String[] idsrequest.getParameterValues("id") 那么这句SQL是需要动态的 还…