QT---day3---9.19

news/2024/10/21 5:31:40/

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

 ui界面:

头文件:

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QFontDialog>
#include <QMessageBox>
#include <QColor>
#include <QColorDialog>
#include <QFont>
#include <QDebug>
#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_fontBtn_clicked();void on_colorBtn_clicked();void on_openBtn_clicked();void on_saveBtn_clicked();private:Ui::Widget *ui;
};
#endif // WIDGET_H

 cpp文件:

main:

#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

 功能函数:

#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;QFont f=QFontDialog::getFont(&ok,QFont("隶书",10,10,false),this,"选择字体");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 files(*.txt);;XML files(*.xml)");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->textEdit->setText(msg);//将内容展示在ui界面}void Widget::on_saveBtn_clicked()
{QString fileName=QFileDialog::getSaveFileName(this,"保存文件","./","All(*.*);;Images(*.png *.xpm *.jpg);;Text files(*.txt);;XML files(*.xml)");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 msg=ui->textEdit->toPlainText();//读写操作file.write(msg.toUtf8());//将ui界面内容编码格式改为utf-8,并写入保存文件中file.close();//关闭文件}

2>完成如下闹钟功能:

当前时间为本地时间,编辑的时间自定义,启动后当时间相等时,自动播报文本编辑内容,按下停止按钮结束播报

ui界面:

pro文件 :

 

 cpp:

 main:

#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

功能函数:

#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);speecher = new QTextToSpeech(this);ui->textEdit->insertPlainText("三更灯火五更鸡\n正是男儿读书时\n黑发不知勤学早\n白首方悔读书迟");}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:ss");ui->label->setText(t);QString b=ui->lineEdit->text();if(t == b){speecher->say(ui->textEdit->toPlainText());}}
}void Widget::on_pushButton_clicked()
{}void Widget::on_pushButton_2_clicked()
{speecher->stop();ui->lineEdit->clear();
}

 头文件:

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QTimerEvent>
#include <QTime>
#include <QTextToSpeech>          //文本转语音类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;//定义一个播报员QTextToSpeech *speecher;
};
#endif // WIDGET_H

 

3>思维导图:


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

相关文章

C++ placement new使用

placement new重载来原来的operator new&#xff0c;且placement new不能被即需重载 placement new是在原有的一块地址上继续创建一个对象&#xff0c;注意对象类型要一致&#xff0c;这样的操作的优势有两个&#xff1a; 1、不用花时间在找合适的空间存放新对象&#xff0c;…

【前端打怪升级日志之微前端框架篇】微前端qiankun框架子应用间跳转方法

参考链接qiankun官网&#xff1a;微应用之间如何跳转&#xff1f; 1.主应用、子应用路由都是hash模式 主应用根据 hash 来判断微应用&#xff0c;无需考虑该问题 2.主应用根据path判断子应用 方法实现适用条件参数传递存在问题a标签跳转<a href"/toA"></…

Dubbo3应用开发—XML形式的Dubbo应用开发和SpringBoot整合Dubbo开发

Dubbo3程序的初步开发 Dubbo3升级的核心内容 易⽤性 开箱即⽤&#xff0c;易⽤性⾼&#xff0c;如 Java 版本的⾯向接⼝代理特性能实现本地透明调⽤功能丰富&#xff0c;基于原⽣库或轻量扩展即可实现绝⼤多数的 微服务治理能⼒。更加完善了多语言支持&#xff08;GO PYTHON R…

前端实现打字效果

前端实现打字效果 不带光标 只一次播放 HTML <!-- 需要在初始化的时候不显示文字 --> <div id"typing"></div>CSS #typing {position: relative;font-size: 24px;font-family: Arial, sans-serif;padding: 10px; }JS const text "要显…

LeetCode 78 子集

1、在使用回溯算法时&#xff0c;循环中&#xff0c;对于数组和字符串的处理是不一样的 数组是在回溯时indexi1&#xff0c;而字符串是在循环时便加1&#xff0c;然后回溯使用的indexi。&#xff08;子集使用的是i1&#xff09; 2、似乎使用new ArrayList<>(LinkedList…

大数据Hadoop高可用

HA高可靠集群 hdfs中的HA搭建&#xff1a; 三个namenode如何保证数据一致&#xff1f; fsimage: 更新频率低, 由一台进行修改&#xff0c;剩下的所有机器进行同步edits: 更新频率高&#xff0c;JN日志节点&#xff08;hadoop的专属zk&#xff0c;只做数据全局一致性保证&…

MySQL 某个字段存储不了内容

1. 原因 某个字段存储的内容过大 2. 解决 修改max_allowed_packet参数 max_allowed_packet参数是指mysql服务器端在一次传送数据包的过程当中最大允许的数据包大小。如果超过了设置的最大长度&#xff0c;则会数据库保持数据失败。 2.1 查询参数 show variables like %max…

数据库计算机三级等级考试--数据库技术相关知识点和笔记

数据库计算机三级等级考试–数据库技术 计算机三级等级考试笔记,是博主通过计算机三级数据库技术考试的相关笔记&#xff0c;此篇博客&#xff0c;不仅适合需要考计算机三级考试的各位考生&#xff0c;也适合在职场处理关于数据库的部分操作&#xff0c;个人认为算是一篇使用性…