• Qt-day3


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

    1. //保存按钮对应的槽函数
    2. void Widget::on_saveBtn_clicked()
    3. {
    4. QString fileName = QFileDialog::getSaveFileName(this, //父组件
    5. "保存文件", //对话框标题
    6. "./", //起始路径
    7. "All(*.*);;Images (*.png *.xpm *.jpg);;Text files(*.txt);;XML files(*.xml)"); //过滤器
    8. //判断是否选中文件
    9. if(fileName.isNull()) //微等同于fileName.isEmpty(),但有区别
    10. {
    11. QMessageBox::information(this, "提示", "用户取消了保存文件");
    12. return;
    13. }
    14. qDebug()<//得到文件路径
    15. //文件操作
    16. //1、实例化一个文件对象
    17. QFile file(fileName);
    18. //2、打开文件
    19. if(!file.isOpen()) //如果该文件没有被打开,则打开文件
    20. {
    21. //调用打开文件操作
    22. if(!file.open(QFile::WriteOnly))
    23. {
    24. QMessageBox::critical(this, "失败", "文件打开失败");
    25. return; //文件打开失败
    26. }
    27. }
    28. //3、读写操作
    29. QString msg = ui->textEdit->toPlainText();
    30. file.write(msg.toLocal8Bit());
    31. //4、关闭文件
    32. file.close();
    33. QMessageBox::information(this, "提示", "文件保存成功");
    34. }

    2、定时器播报

    头文件

    1. #ifndef WIDGET_H
    2. #define WIDGET_H
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. #include
    9. #include
    10. #include
    11. QT_BEGIN_NAMESPACE
    12. namespace Ui { class Widget; }
    13. QT_END_NAMESPACE
    14. class Widget : public QWidget
    15. {
    16. Q_OBJECT
    17. signals:
    18. void my_signal(QString msg); //自定义一个有参无返回值信号函数
    19. public:
    20. Widget(QWidget *parent = nullptr);
    21. ~Widget();
    22. void timerEvent(QTimerEvent *e) override; //定时器事件处理函数
    23. private slots:
    24. //void my_slot();
    25. void on_startBtn_clicked();
    26. void on_closeBtn_clicked();
    27. private:
    28. Ui::Widget *ui;
    29. int timer_id; //定时器的id号
    30. //定义一个播报员
    31. QTextToSpeech *speecher;
    32. };
    33. #endif // WIDGET_H

    源文件

    1. #include "widget.h"
    2. #include "ui_widget.h"
    3. Widget::Widget(QWidget *parent)
    4. : QWidget(parent)
    5. , ui(new Ui::Widget)
    6. {
    7. ui->setupUi(this);
    8. //给播报员实例化空间
    9. speecher = new QTextToSpeech(this);
    10. }
    11. Widget::~Widget()
    12. {
    13. delete ui;
    14. }
    15. //启动定时器按钮对应的槽函数
    16. void Widget::on_startBtn_clicked()
    17. {
    18. //启动一个定时器
    19. timer_id = this->startTimer(1000); //隔1秒
    20. }
    21. //关闭定时器按钮对应的槽函数
    22. void Widget::on_closeBtn_clicked()
    23. {
    24. //关闭给定的定时器
    25. this->killTimer(timer_id);
    26. }
    27. //定时器事件处理函数
    28. void Widget::timerEvent(QTimerEvent *e)
    29. {
    30. if(e->timerId() == timer_id) //说明定时器1到位
    31. {
    32. QTime sys_t = QTime::currentTime();
    33. //将QTime类对象转换为字符串
    34. QString t = sys_t.toString("hh:mm:ss");
    35. //展示到ui界面
    36. ui->timeLab->setText(t);
    37. //跟设定的时间进行对比
    38. if(t == ui->timeEdit->text())
    39. {
    40. //到时则进行播报
    41. QString text = ui->textEdit->toPlainText();
    42. speecher->say(text);
    43. }
    44. }
    45. }

    主程序

    1. #include "widget.h"
    2. #include
    3. int main(int argc, char *argv[])
    4. {
    5. QApplication a(argc, argv);
    6. Widget w;
    7. w.show();
    8. return a.exec();
    9. }

    ui界面

    3、思维导图

  • 相关阅读:
    探索数字孪生的潜力:五个最有前景的行业
    linux安装sqoop
    设计模式学习(二):单例模式
    Flutter Image组件如何处理图片加载过程中的错误?
    [国产MCU]-W801开发实例-TCP客户端与服务器实现
    关于PSINS运动轨迹仿真模块的理解和思考
    JSD-2204-酷莎商城-ElementUI-Day07
    也谈SAP系统优缺点
    golang 基础 —— 字符串 与 int 、int64 互转
    Fastflow——基于golang的轻量级工作流框架
  • 原文地址:https://blog.csdn.net/Lychee_z23/article/details/133045255