• QT---day3---9.19


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

     ui界面

    头文件:

    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_fontBtn_clicked();
    23. void on_colorBtn_clicked();
    24. void on_openBtn_clicked();
    25. void on_saveBtn_clicked();
    26. private:
    27. Ui::Widget *ui;
    28. };
    29. #endif // WIDGET_H

     cpp文件:

    main:

    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. #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. void Widget::on_fontBtn_clicked()
    14. {
    15. bool ok;
    16. QFont f=QFontDialog::getFont(&ok,
    17. QFont("隶书",10,10,false),
    18. this,
    19. "选择字体");
    20. if(ok)
    21. {
    22. //ui->textEdit->setFont(f);设置全部文字
    23. ui->textEdit->setCurrentFont(f);//设置选中字体
    24. //ui->textEdit->setFontItalic(true);//设置选中字体倾斜
    25. }else{
    26. QMessageBox::information(this,"取消","用户取消的选择字体");
    27. }
    28. }
    29. void Widget::on_colorBtn_clicked()
    30. {
    31. QColor c=QColorDialog::getColor(QColor("green"),
    32. this,
    33. "选择颜色");
    34. if(c.isValid())
    35. {
    36. //ui->textEdit->setTextColor(c);//设置字体颜色
    37. ui->textEdit->setTextBackgroundColor(c);//设置字体背景色
    38. }else
    39. {
    40. QMessageBox::information(this,"取消","用户取消了选择颜色");
    41. }
    42. }
    43. void Widget::on_openBtn_clicked()
    44. {
    45. QString fileName=QFileDialog::getOpenFileName(this,
    46. "选择文件",
    47. "./",
    48. "All(*.*);;Images(*.png *.xpm *.jpg);;Text files(*.txt);;XML files(*.xml)");
    49. if(fileName.isNull())
    50. {
    51. QMessageBox::information(this,"提示","用户取消了选择文件");
    52. return;
    53. }
    54. //qDebug()<
    55. //文件操作
    56. QFile file(fileName);//实例化一个文件对象
    57. if(!file.isOpen())//文件没打开执行打开文件
    58. {
    59. if(!file.open(QFile::ReadWrite))
    60. {
    61. QMessageBox::critical(this,"失败","文件打开失败");
    62. return;
    63. }
    64. }
    65. QByteArray msg=file.readAll();//读写操作
    66. file.close();//关闭文件
    67. ui->textEdit->setText(msg);//将内容展示在ui界面
    68. }
    69. void Widget::on_saveBtn_clicked()
    70. {
    71. QString fileName=QFileDialog::getSaveFileName(this,
    72. "保存文件",
    73. "./",
    74. "All(*.*);;Images(*.png *.xpm *.jpg);;Text files(*.txt);;XML files(*.xml)");
    75. if(fileName.isNull())
    76. {
    77. QMessageBox::information(this,"提示","用户取消了保存文件");
    78. return;
    79. }
    80. //qDebug()<
    81. //文件操作
    82. QFile file(fileName);//实例化一个文件对象
    83. if(!file.isOpen())//文件没打开执行打开文件
    84. {
    85. if(!file.open(QFile::ReadWrite))
    86. {
    87. QMessageBox::critical(this,"失败","文件打开失败");
    88. return;
    89. }
    90. }
    91. QString msg=ui->textEdit->toPlainText();//读写操作
    92. file.write(msg.toUtf8());//将ui界面内容编码格式改为utf-8,并写入保存文件中
    93. file.close();//关闭文件
    94. }

    2>完成如下闹钟功能:

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

    ui界面:

    pro文件 :

     

     cpp:

     main:

    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. #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. timer_id = this->startTimer(1000);
    9. speecher = new QTextToSpeech(this);
    10. ui->textEdit->insertPlainText("三更灯火五更鸡\n正是男儿读书时\n黑发不知勤学早\n白首方悔读书迟");
    11. }
    12. Widget::~Widget()
    13. {
    14. delete ui;
    15. }
    16. void Widget::timerEvent(QTimerEvent *e)
    17. {
    18. if(e->timerId()==timer_id)
    19. {
    20. QTime sys_t=QTime::currentTime();
    21. QString t=sys_t.toString("hh:mm:ss");
    22. ui->label->setText(t);
    23. QString b=ui->lineEdit->text();
    24. if(t == b)
    25. {
    26. speecher->say(ui->textEdit->toPlainText());
    27. }
    28. }
    29. }
    30. void Widget::on_pushButton_clicked()
    31. {
    32. }
    33. void Widget::on_pushButton_2_clicked()
    34. {
    35. speecher->stop();
    36. ui->lineEdit->clear();
    37. }

     头文件:

    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_pushButton_clicked();
    19. void on_pushButton_2_clicked();
    20. private:
    21. Ui::Widget *ui;
    22. int timer_id;
    23. //定义一个播报员
    24. QTextToSpeech *speecher;
    25. };
    26. #endif // WIDGET_H

     

    3>思维导图:

  • 相关阅读:
    awk入门教程
    leetcode 131. 分割回文串
    安利一款纯Python编写的GTF处理脚本 - GTFtools
    【动态代理】
    【LeetCode】813. 最大平均值和的分组
    vue 中 style 标签中的 scoped 属性(作用域)和 lang 属性的介绍
    Fabric.js 禁止元素超出画布
    架构——mysql、wiki、jira
    sqli第24关二次注入
    手把手教你Nginx常用模块详解之ngx_stream_ssl_module(七)
  • 原文地址:https://blog.csdn.net/yjh666jhy/article/details/133042607