• 2023年9月19日


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

    头文件

    1. #ifndef MAINWINDOW_H
    2. #define MAINWINDOW_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 MainWindow; }
    14. QT_END_NAMESPACE
    15. class MainWindow : public QMainWindow
    16. {
    17. Q_OBJECT
    18. public:
    19. MainWindow(QWidget *parent = nullptr);
    20. ~MainWindow();
    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::MainWindow *ui;
    28. };
    29. #endif // MAINWINDOW_H

    .cpp文件

    1. #include "mainwindow.h"
    2. #include "ui_mainwindow.h"
    3. MainWindow::MainWindow(QWidget *parent)
    4. : QMainWindow(parent)
    5. , ui(new Ui::MainWindow)
    6. {
    7. ui->setupUi(this);
    8. }
    9. MainWindow::~MainWindow()
    10. {
    11. delete ui;
    12. }
    13. //字体按钮对应的槽
    14. void MainWindow::on_fontbtn_clicked()
    15. {
    16. bool ok;
    17. QFont f = QFontDialog::getFont(&ok,
    18. QFont("隶书",10,10,false),
    19. this,
    20. "选择字体");
    21. if(ok)
    22. {
    23. //ui->textEdit->setFont(f);
    24. ui->textEdit->setCurrentFont(f);
    25. }else
    26. {
    27. QMessageBox::information(this,
    28. "取消",
    29. "用户取消选择字体");
    30. }
    31. }
    32. void MainWindow::on_colorbtn_clicked()
    33. {
    34. QColor c = QColorDialog::getColor(QColor("yellow"),
    35. this,
    36. "选择颜色");
    37. if(c.isValid())
    38. {
    39. ui->textEdit->setTextColor(c);
    40. }else
    41. {
    42. QMessageBox::information(this,
    43. "取消",
    44. "用户取消了选择颜色");
    45. }
    46. }
    47. void MainWindow::on_openbtn_clicked()
    48. {
    49. QString fileName = QFileDialog::getOpenFileName(this,
    50. "选择文件",
    51. "./",
    52. "All(*.*);;Image (*.png *.xpm *.hpg);;Text (*.txt)");
    53. if(fileName.isNull())
    54. {
    55. QMessageBox::information(this,"提示","用户取消了选择文件");
    56. return ;
    57. }
    58. qDebug()<
    59. QFile file(fileName);
    60. if(!file.isOpen())
    61. {
    62. if(!file.open(QFile::ReadWrite))
    63. {
    64. QMessageBox::critical(this,"失败","文件打开失败");
    65. return;
    66. }
    67. }
    68. QByteArray msg = file.readAll();
    69. file.close();
    70. ui->textEdit->setText(msg);
    71. }
    72. void MainWindow::on_savebtn_clicked()
    73. {
    74. QString fileName = QFileDialog::getSaveFileName(this,
    75. "文件另存为",
    76. "./",
    77. "All(*.*);;Image (*.png *.xpm *.hpg);;Text (*.txt)");
    78. if(fileName.isNull())
    79. {
    80. QMessageBox::information(this,"提示","用户取消了保存文件");
    81. return ;
    82. }
    83. qDebug()<
    84. QFile file(fileName);
    85. if(file.open(QFile::ReadWrite))
    86. {
    87. QByteArray msg = file.readAll();
    88. msg=ui->textEdit->toPlainText().toLocal8Bit();
    89. file.write(msg);
    90. }else
    91. {
    92. QMessageBox::information(this,"提示","文件另存为失败");
    93. }
    94. }

    3>

    头文件

    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. //时钟函数
    22. void timerEvent(QTimerEvent *e) override;
    23. private:
    24. Ui::Widget *ui;
    25. QTimer *timer;
    26. int time_id;
    27. QTextToSpeech *speech = new QTextToSpeech(this);
    28. private slots:
    29. //确定按钮
    30. void on_pushButton_clicked();
    31. //计时器事件函数
    32. void on_timer_timeout();
    33. //取消按钮
    34. void on_pushButton_2_clicked();
    35. };
    36. #endif // WIDGET_H

    .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. this->timer=new QTimer;
    9. //0.1s检查一次
    10. time_id=startTimer(100);
    11. //连接定时器信号和自定义的槽函数
    12. connect(timer,&QTimer::timeout,this,&Widget::on_timer_timeout);
    13. }
    14. Widget::~Widget()
    15. {
    16. delete ui;
    17. }
    18. //启动按钮
    19. void Widget::on_pushButton_clicked()
    20. {
    21. timer->start(100);
    22. ui->textEdit->setReadOnly(true);
    23. ui->lineEdit->setReadOnly(true);
    24. }
    25. //计时器函数
    26. void Widget::on_timer_timeout()
    27. {
    28. if(ui->lineEdit->text()==ui->label->text())
    29. {
    30. //播报员
    31. speech = new QTextToSpeech(this);
    32. QString text = ui->textEdit->toPlainText();
    33. speech->say(text);
    34. }
    35. }
    36. //时钟
    37. void Widget::timerEvent(QTimerEvent *event)
    38. {
    39. if(event->timerId()==time_id)
    40. {
    41. QDateTime sysDateTime=QDateTime::currentDateTime();
    42. QString dateTime=sysDateTime.toString("hh:mm:ss");
    43. ui->label->setText(dateTime);
    44. }
    45. }
    46. //停止
    47. void Widget::on_pushButton_2_clicked()
    48. {
    49. QMessageBox box(QMessageBox::Warning,"Warning","是否要重设闹钟",QMessageBox::Yes|QMessageBox::No);
    50. int ret = box.exec();
    51. if(ret==QMessageBox::Yes)
    52. {
    53. //关闭定时器
    54. timer->stop();
    55. //定时器关闭后行编辑器和文本编辑器重新有效
    56. ui->textEdit->setReadOnly(false);
    57. ui->lineEdit->setReadOnly(false);
    58. //清空之前设置的行文本编辑器
    59. ui->lineEdit->clear();
    60. speech->stop();
    61. }
    62. }

  • 相关阅读:
    iphone无线调试(通过wifi无线来调试真机)
    线性代数 --- 投影Projection 二(投影即分量)
    vuex是什么?如何使用?使用他的功能场景?
    python开发之个微群聊机器人的开发
    在嵌入式开发中如何提高自己的代码水平
    SpringBoot + Nacos + K8s 优雅停机
    Sqli-labs靶场第19关详解[Sqli-labs-less-19]自动化注入-SQLmap工具注入
    Day08 SSM第八次笔记---SpringBoot基础部分学习
    【计算机是怎么跑起来的】软件,体验一次手工汇编
    瑞芯微:基于RK3568的深度估计模型部署
  • 原文地址:https://blog.csdn.net/2201_75732711/article/details/133041261