23062QTday3

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

cpp 复制代码
//保存文件
void Widget::on_savebtn_clicked()
{
    QString newfile=QFileDialog::getSaveFileName(this,
                                                 "保存文件",
                                                 "./",
                                                 "All(*.*);;Images(*.png *.xpm *.jpg);;Text files(*.txt);;");
    if(newfile.isNull())
    {
        QMessageBox::information(this,"提示","用户取消了保存文件");
        return;
    }
    QFile file(newfile);
    if (!file.open(QIODevice:: Truncate| QIODevice::ReadWrite| QIODevice::Text))
             return;
    QString msg=ui->textEdit->toPlainText();
    file.write(QByteArray(msg.toUtf8()));
    file.close();
}

运行结果:

头文件

cpp 复制代码
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QTimerEvent>
#include<QTime>
#include <QTextToSpeech>          //文本转语音类
#include<QVoice>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
    void  timerEvent(QTimerEvent *e)override;
private slots:
    void on_startbtn_clicked();

    void on_closebtn_clicked();

private:
    Ui::Widget *ui;
    int timer_id;
    //定义一个播报员
    QTextToSpeech *speecher;
};
#endif // WIDGET_H

源文件:

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_startbtn_clicked()
{
    timer_id=this->startTimer(1000);

}

void Widget::on_closebtn_clicked()
{
  //  this->killTimer(timer_id);
    speecher->stop();
    ui->lineEdit->clear();//清空闹钟定时
}

void Widget::timerEvent(QTimerEvent *e)
{
    //给播报员实例化空间
    speecher = new QTextToSpeech(this);
    if(e->timerId()==timer_id)
    {
        QTime sys_t=QTime::currentTime();
        QString t=sys_t.toString("hh:mm:ss");
        ui->label->setText(t);
        if(t==ui->lineEdit->text())
        speecher->say(ui->textEdit->toPlainText());
        speecher->rate();

    }
}

测试文件:

cpp 复制代码
#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}
相关推荐
江畔柳前堤34 分钟前
前台·中台·后台:2026年AI原生时代的架构全景图
开发语言·人工智能·算法·机器学习·架构·scala·ai-native
Figo_Cheung44 分钟前
Figo基于RNC理论的宇宙演化第七纪元猜想
开发语言·php
泡海椒2 小时前
JQuick-Curl 二次开发:自定义解析器、扩展点开发指南,如何把框架能力真正变成团队资产
java·开发语言·okhttp·maven
WWJA王文举2 小时前
FreeRTOS事件组和任务通知详解:为什么任务通知比队列更轻量?
开发语言·php
wuyk5553 小时前
12.归并排序:分治思想的稳定排序算法
开发语言·数据结构·算法·排序算法
吴声子夜歌3 小时前
ApacheCommons——commons-text(模板替换与文本算法)
java·开发语言·算法·apache
quantdash_cc4 小时前
量化数据源怎么选:稳定性、实时性和数据完整性到底该如何权衡?
开发语言·python·数据分析·量化交易·股票数据·quantdash
萧瑟余晖4 小时前
Java深入解析篇五十四之对象模型详解
java·开发语言
张文是假的啊5 小时前
Java | record | Controller逻辑
java·开发语言
不甘先生5 小时前
Go 中 type、方法与指针接收者:从 str_name.Name() 看懂 Go 的类型系统
开发语言·后端·golang