• 9.19 QT作业


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

    widget.h

    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

    widget.cpp

    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->setCurrentFont(f);
    23. }
    24. else
    25. {
    26. QMessageBox::information(this,"取消","用户取消字体");
    27. }
    28. }
    29. void Widget::on_colorbtn_clicked()
    30. {
    31. QColor c = QColorDialog::getColor(QColor("yellow"),
    32. this,
    33. "选择颜色");
    34. if(c.isValid())
    35. {
    36. ui->textEdit->setTextBackgroundColor(c);
    37. }
    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(*.*)");
    49. if(filename.isNull())
    50. {
    51. QMessageBox::information(this,"取消","用户取消选择文件");
    52. }
    53. else
    54. {
    55. qDebug()<<filename;
    56. QFile file(filename);
    57. if(!file.isOpen())
    58. {
    59. if(!file.open(QFile::ReadWrite))
    60. {
    61. QMessageBox::critical(this,"失败","文件打开失败");
    62. }
    63. }
    64. QByteArray msg = file.readAll();
    65. file.close();
    66. ui->textEdit->setText(msg);
    67. }
    68. }
    69. void Widget::on_savebtn_clicked()
    70. {
    71. QString fileName = QFileDialog::getSaveFileName(this, "保存文件", "./", "All(*.*)");
    72. if(fileName.isNull())
    73. {
    74. QMessageBox::information(this, "取消", "用户取消选中");
    75. }
    76. else
    77. {
    78. QFile file(fileName);
    79. if(file.exists())
    80. {
    81. file.remove();
    82. }
    83. if(!file.open(QIODevice::WriteOnly))
    84. {
    85. QMessageBox::critical(this, "错误", "文件打开失败");
    86. return;
    87. }
    88. else
    89. {
    90. std::string s1 = ui->textEdit->toPlainText().toStdString();
    91. const char *text = s1.c_str();
    92. if(-1 == file.write(text))
    93. {
    94. QMessageBox::critical(this, "错误", "文件写入失败");
    95. }else
    96. {
    97. QMessageBox::information(this, "成功", "文件写入成功");
    98. }
    99. file.close();
    100. }
    101. }
    102. }

    main.cpp

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

    widget.h

    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. public:
    18. Widget(QWidget *parent = nullptr);
    19. ~Widget();
    20. void timerEvent(QTimerEvent *e) override; //定时器事件处理函数
    21. signals:
    22. void my_sign();
    23. private slots:
    24. void qidong_clicked();
    25. void tingzhi_clicked();
    26. private:
    27. Ui::Widget *ui;
    28. int timer_id; //定时器的id号
    29. QLabel *lab1;
    30. QLineEdit *edit1;
    31. QTextEdit *edit2;
    32. QTextToSpeech *speencher;
    33. };
    34. #endif // WIDGET_H

    widget.cpp

    1. #include "widget.h"
    2. #include "ui_widget.h"
    3. #include<iostream>
    4. #include<QObject>
    5. #include<QDebug>
    6. #include<QPushButton>
    7. #include<QLineEdit>
    8. #include<QLabel>
    9. #include<QTextEdit>
    10. #include<QTimerEvent> //定时器事件处理类
    11. #include<QTime>
    12. Widget::Widget(QWidget *parent)
    13. : QWidget(parent)
    14. , ui(new Ui::Widget)
    15. {
    16. ui->setupUi(this);
    17. QPushButton *btn1 = new QPushButton; //设置按钮1
    18. btn1->setParent(this);
    19. btn1->setText("启动"); //定义按钮内容
    20. btn1->resize(100,50); //设置按钮大小
    21. btn1->move(400,200); //移动按钮位置
    22. QPushButton *btn2 = new QPushButton; //设置按钮2
    23. btn2->setParent(this);
    24. btn2->setText("停止"); //定义按钮内容
    25. btn2->resize(100,50); //设置按钮大小
    26. btn2->move(600,200);
    27. lab1 = new QLabel(this); //设置标签
    28. lab1->resize(100,50);
    29. lab1->setStyleSheet("background-color:yellow;");
    30. //lab1->setText("");
    31. edit1 = new QLineEdit(this);
    32. edit1->resize(300,75); //设置行编辑器大小
    33. edit1->move(400,80); //移动行编辑器
    34. edit1->setText(QString());
    35. edit2 = new QTextEdit(this);
    36. edit2->resize(400,300);
    37. edit2->move(200,300);
    38. edit2->setText(QString("南华城里月如昼\n十二玉楼非吾乡"));
    39. speencher = new QTextToSpeech(this);
    40. connect(btn1, &QPushButton::clicked, this, &Widget::qidong_clicked);
    41. connect(btn2, &QPushButton::clicked, this, &Widget::tingzhi_clicked);
    42. }
    43. Widget::~Widget()
    44. {
    45. delete ui;
    46. }
    47. //启动定时器按钮对应的槽函数
    48. void Widget::qidong_clicked()
    49. {
    50. timer_id = this->startTimer(1000);
    51. //功能:启动一个定时器
    52. }
    53. //关闭定时器按钮对应的槽函数
    54. void Widget::tingzhi_clicked()
    55. {
    56. this->killTimer(timer_id); //关闭给定的定时器
    57. }
    58. //定时器事件处理函数
    59. void Widget::timerEvent(QTimerEvent *e)
    60. {
    61. if(e->timerId() == timer_id) //说明定时器1到位
    62. {
    63. QTime sys_t = QTime::currentTime(); //获取系统时间
    64. //将QTime类对象转换为字符串
    65. QString t = sys_t.toString("hh:mm:ss");
    66. //展示到ui界面
    67. lab1->setText(t);
    68. if(t == edit1->text())
    69. {
    70. speencher->say(edit2->toPlainText());
    71. qDebug()<<edit2->toPlainText();
    72. }
    73. }
    74. }

    main.cpp
     

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

  • 相关阅读:
    蓝湖的安装及使用
    ORA-27090: Unable to reserve kernel resources for asynchronous disk I/O
    小白学java
    Python 爬虫基础入门知识
    Linux SSH连接远程服务器(免密登录、scp和sftp传输文件)
    STI比赛任务一:【智能问答baseline】
    java计算机毕业设计车辆保险平台系统研究与设计MyBatis+系统+LW文档+源码+调试部署
    00_C语言学习笔记
    广州蓝景分享—「web前端素材」使用CSS动画效果(下)
    SSRF-服务器端请求伪造-相关知识
  • 原文地址:https://blog.csdn.net/JunCool02/article/details/133055413