• Qt day3


    关于文本编辑器:

    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. //ui->textEdit->setFont(f);
    22. ui->textEdit->setCurrentFont(f);
    23. }else{
    24. QMessageBox::information(this,"取消","用户取消了选择字体");
    25. }
    26. }
    27. void Widget::on_colorbtn_clicked()
    28. {
    29. QColor c = QColorDialog::getColor(QColor("blue"),
    30. this,
    31. "选择颜色");
    32. if(c.isValid()){
    33. ui->textEdit->setTextColor(c);
    34. }else{
    35. QMessageBox::information(this,"取消","用户取消改变颜色");
    36. }
    37. }
    38. void Widget::on_openbtn_clicked()
    39. {
    40. QString fileName = QFileDialog::getOpenFileName(this,
    41. "选择文件",
    42. "./",
    43. "All(*.*);;Images(*.png *.xpm *.jpg);;Text files(*.txt);;");
    44. if(fileName.isNull()){
    45. QMessageBox::information(this,"提示","取消选择文件");
    46. return;
    47. }
    48. qDebug()<
    49. QFile file(fileName);
    50. if(!file.isOpen()){
    51. if(!file.open(QFile::ReadWrite)){
    52. QMessageBox::critical(this,"失败","文件打开失败");
    53. return;
    54. }
    55. }
    56. QByteArray msg = file.readAll();
    57. file.close();
    58. ui->textEdit->setText(msg);
    59. }
    60. void Widget::on_savebtn_clicked()
    61. {
    62. //创建一个文件用来保存
    63. QFileDialog fileDialog;
    64. QString fileName = fileDialog.getSaveFileName(this,"打开文件","/my_data","Text file(*.txt)");
    65. if(fileName == ""){
    66. return;
    67. }
    68. //选择路径保存文件名
    69. QFile file(fileName);
    70. if(!file.open(QIODevice::WriteOnly|QIODevice::Text)){
    71. QMessageBox::warning(this,"错误","打开文件失败");
    72. return;
    73. }
    74. else{
    75. QTextStream textStream(&file);
    76. //将自己的文本文件保存到指定路径
    77. QString s = ui->textEdit->toPlainText();
    78. textStream<
    79. QMessageBox::information(this,"提示","文件保存成功");
    80. file.close();
    81. }
    82. }

     

     一个小闹钟:

    widget.h:

    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_startbtn_clicked();
    19. void on_closebtn_clicked();
    20. private:
    21. Ui::Widget *ui;
    22. int timer_id;
    23. //定义一个播报员
    24. QTextToSpeech *speecher;
    25. };
    26. #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_startbtn_clicked()
    14. {
    15. timer_id = this->startTimer(1000);
    16. }
    17. void Widget::on_closebtn_clicked()
    18. {
    19. //this->killTimer(timer_id);
    20. //清空定时文本内容,他读不了一点
    21. ui->lineEdit->clear();
    22. speecher->stop();
    23. }
    24. void Widget::timerEvent(QTimerEvent *e){
    25. if(e->timerId() == timer_id){
    26. QTime sys_t = QTime::currentTime();
    27. QString t = sys_t.toString("hh.mm.ss");
    28. ui->timeLab->setText(t);
    29. //给播报员实例化空间(不能在if语句内,会内存泄漏(应该吧))
    30. speecher = new QTextToSpeech(this);
    31. if(t == ui->lineEdit->text()){
    32. speecher->say(ui->textEdit->toPlainText());
    33. }
    34. }
    35. }

  • 相关阅读:
    【MySQL系列】如何在MySQL中使用触发器?MySQL触发器详解
    allure测试报告生成逻辑--解决在Jenkins里打开allure报告页面后空白显示无数据问题(以window环境为例)
    基于poi 3.17导入excel文件 含处理字典项转换为状态
    20个最佳实践提升Terraform工作流程|Part 2
    cefpython3的使用
    一、综合——通信职业道德
    大学毕业去什么样的公司工作不后悔?
    算法2:链表的逆转
    Zookeeper安装及使用
    MFC静态编译,出现链接错误-库冲突(libcmt.lib和libcmtd.lib)
  • 原文地址:https://blog.csdn.net/2301_77665369/article/details/133045988