• QTday3


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

    头文件

    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. #include //文件头文件
    12. QT_BEGIN_NAMESPACE
    13. namespace Ui { class Widget; }
    14. QT_END_NAMESPACE
    15. class Widget : public QWidget
    16. {
    17. Q_OBJECT
    18. public:
    19. Widget(QWidget *parent = nullptr);
    20. ~Widget();
    21. private slots:
    22. void on_btn1_clicked();
    23. void on_btn2_clicked();
    24. void on_btn3_clicked();
    25. void on_btn4_clicked();
    26. private:
    27. Ui::Widget *ui;
    28. };
    29. #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. Widget::~Widget()
    10. {
    11. delete ui;
    12. }
    13. //字体按钮对应的槽函数
    14. void Widget::on_btn1_clicked()
    15. {
    16. bool ok; //返回用户是否选中字体
    17. //直接调用getFont获取一个字体对话框
    18. QFont f = QFontDialog::getFont(&ok, //返回是否选择字体
    19. QFont("隶书", 10, 10,false), //初始字体
    20. this, //父组件
    21. "选择字体"); //对话框标题
    22. //对ok进行判断,判断用户是否选中字体了
    23. if(ok)
    24. {
    25. ui->text1->setCurrentFont(f); //设置选中的字体
    26. }else
    27. {
    28. //用户取消了选中字体
    29. QMessageBox::information(this, "取消", "用户取消选择字体");
    30. }
    31. }
    32. //颜色按钮对应的槽函数
    33. void Widget::on_btn2_clicked()
    34. {
    35. QColor c = QColorDialog::getColor(QColor("green"), //初始颜色
    36. this, //父组件
    37. "选择颜色"); //对话框标题
    38. //判断c的合法性
    39. if(c.isValid())
    40. {
    41. ui->text1->setTextColor(c); //设置字体颜色
    42. }else
    43. {
    44. QMessageBox::information(this, "取消","用户取消了选择颜色");
    45. }
    46. }
    47. //打开按钮对应的槽函数
    48. void Widget::on_btn3_clicked()
    49. {
    50. QString fileName = QFileDialog::getOpenFileName(this, //父组件
    51. "选择文件", //对话框标题
    52. "./", //起始路径
    53. "All(*.*);;Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)"); //过滤器
    54. //判断是否选中文件
    55. if(fileName.isNull())
    56. {
    57. QMessageBox::information(this,"提示","用户取消了选择文件");
    58. return;
    59. }
    60. qDebug()<<fileName; //得到文件路径
    61. QFile file(fileName);
    62. //打开文件
    63. if(!file.isOpen()) //如果该文件没有被打开
    64. {
    65. //调用打开文件操作
    66. if(!file.open(QFile::ReadWrite))
    67. {
    68. QMessageBox::critical(this, "失败","文件打开失败");
    69. return; //文件打开失败
    70. }
    71. }
    72. //读写操作
    73. QByteArray msg = file.readAll();
    74. //关闭文件
    75. file.close();
    76. //将读取的文本展示在ui界面
    77. ui->text1->setText(msg);
    78. }
    79. //保存按钮对应的槽函数
    80. void Widget::on_btn4_clicked()
    81. {
    82. QString fileName = QFileDialog::getSaveFileName(this, //父组件
    83. "选择文件", //对话框标题
    84. "./", //起始路径
    85. "All(*.*);;Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)"); //过滤器
    86. //判断是否选中文件
    87. if(fileName.isNull())
    88. {
    89. QMessageBox::information(this,"提示","用户取消了选择文件");
    90. return;
    91. }
    92. qDebug()<<fileName; //得到文件路径
    93. QFile file(fileName);
    94. //打开文件
    95. if(!file.isOpen()) //如果该文件没有被打开
    96. {
    97. //调用打开文件操作
    98. if(!file.open(QFile::ReadWrite))
    99. {
    100. QMessageBox::critical(this, "失败","文件打开失败");
    101. return; //文件打开失败
    102. }
    103. }
    104. //读写操作
    105. QString msg = ui->text1->toPlainText(); //获取文件编辑器的文本内容
    106. file.write(msg.toLocal8Bit()); //将内容保存在文件里
    107. //关闭文件
    108. file.close();
    109. }

    主函数

    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. }

    测试结果

    闹钟 

    头文件

    1. #ifndef WIDGET_H
    2. #define WIDGET_H
    3. #include
    4. #include //文本转语音类
    5. #include //定时器事件处理类
    6. #include
    7. QT_BEGIN_NAMESPACE
    8. namespace Ui { class Widget; }
    9. QT_END_NAMESPACE
    10. class Widget : public QWidget
    11. {
    12. Q_OBJECT
    13. public:
    14. Widget(QWidget *parent = nullptr);
    15. ~Widget();
    16. void timerEvent(QTimerEvent *e) override; //定时器事件处理函数
    17. private slots:
    18. void on_btn1_clicked();
    19. void on_btn2_clicked();
    20. private:
    21. Ui::Widget *ui;
    22. int timer_id; //定时器的id号
    23. QTextToSpeech *speecher; //定义一个播报员
    24. QString t; //定义一个时间字符串
    25. };
    26. #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. speecher = new QTextToSpeech(this); //给播报员实例化空间
    9. }
    10. Widget::~Widget()
    11. {
    12. delete ui;
    13. delete speecher;
    14. }
    15. //启动按钮的槽函数
    16. void Widget::on_btn1_clicked()
    17. {
    18. timer_id = this->startTimer(1000);//启动定时器
    19. // speecher->say("你好"); //播报文本
    20. }
    21. //关闭按钮的槽函数
    22. void Widget::on_btn2_clicked()
    23. {
    24. this->killTimer(timer_id);//关闭给定的定时器
    25. }
    26. //定时器事件处理函数
    27. void Widget::timerEvent(QTimerEvent *e)
    28. {
    29. if(e->timerId() == timer_id) //说明定时器1到位
    30. {
    31. QTime sys_t = QTime::currentTime(); //获取系统时间
    32. t = sys_t.toString("hh:mm:ss");
    33. ui->lab1->setText(t);//展示到ui界面
    34. if(ui->lab1->text() == ui->lin1->text())
    35. {
    36. speecher->say(ui->text1->toPlainText()); //播报文本
    37. }
    38. }
    39. }

    主函数

    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. }

    测试结果

    语音播报

    思维导图

  • 相关阅读:
    MySQL创建数据库、创建表操作和用户权限
    spring使用模板模式
    pandas笔记:读写excel
    抖音研发效率负责人:抖音能做到每周迭代,离不开飞书项目
    [数据结构】栈和队列
    maven无法下载时的解决方法——笔记
    IntelliJ IDEA中使用“Generate equals() and hashCode()“提供不同模板的区别
    火灾隐患是查不完的,消防监管要着力于提升单位消防能力
    LeetCode 第 367 场周赛
    ros2 --nav2
  • 原文地址:https://blog.csdn.net/weixin_52238362/article/details/133044838