1、完成文本编辑器的保存工作
//保存按钮对应的槽函数
void Widget::on_saveBtn_clicked()
{QString fileName = QFileDialog::getSaveFileName(this, //父组件"保存文件", //对话框标题"./", //起始路径"All(*.*);;Images (*.png *.xpm *.jpg);;Text files(*.txt);;XML files(*.xml)"); //过滤器//判断是否选中文件if(fileName.isNull()) //微等同于fileName.isEmpty(),但有区别{QMessageBox::information(this, "提示", "用户取消了保存文件");return;}qDebug()<<fileName; //得到文件路径//文件操作//1、实例化一个文件对象QFile file(fileName);//2、打开文件if(!file.isOpen()) //如果该文件没有被打开,则打开文件{//调用打开文件操作if(!file.open(QFile::WriteOnly)){QMessageBox::critical(this, "失败", "文件打开失败");return; //文件打开失败}}//3、读写操作QString msg = ui->textEdit->toPlainText();file.write(msg.toLocal8Bit());//4、关闭文件file.close();QMessageBox::information(this, "提示", "文件保存成功");}
2、定时器播报
头文件
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QMouseEvent>
#include <QDebug>
#include <QTimerEvent>
#include <QTime>
#include <QPushButton>
#include <QTextToSpeech>
#include <QVoice>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTsignals:void my_signal(QString msg); //自定义一个有参无返回值信号函数public:Widget(QWidget *parent = nullptr);~Widget();void timerEvent(QTimerEvent *e) override; //定时器事件处理函数private slots://void my_slot();void on_startBtn_clicked();void on_closeBtn_clicked();private:Ui::Widget *ui;int timer_id; //定时器的id号//定义一个播报员QTextToSpeech *speecher;};
#endif // WIDGET_H
源文件
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//给播报员实例化空间speecher = new QTextToSpeech(this);}Widget::~Widget()
{delete ui;
}//启动定时器按钮对应的槽函数
void Widget::on_startBtn_clicked()
{//启动一个定时器timer_id = this->startTimer(1000); //隔1秒
}//关闭定时器按钮对应的槽函数
void Widget::on_closeBtn_clicked()
{//关闭给定的定时器this->killTimer(timer_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->timeLab->setText(t);//跟设定的时间进行对比if(t == ui->timeEdit->text()){//到时则进行播报QString text = ui->textEdit->toPlainText();speecher->say(text);}}}
主程序
#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}
ui界面
3、思维导图