当前位置: 首页 > news >正文

2023年9月19日

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

头文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QFontDialog>
#include <QMainWindow>
#include <QFont>
#include <QMessageBox>
#include <QDebug>
#include <QColorDialog>
#include <QColor>
#include <QFileDialog>
#include <QFile>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void on_fontbtn_clicked();void on_colorbtn_clicked();void on_openbtn_clicked();void on_savebtn_clicked();private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

.cpp文件

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);
}MainWindow::~MainWindow()
{delete ui;
}//字体按钮对应的槽
void MainWindow::on_fontbtn_clicked()
{bool ok;QFont f = QFontDialog::getFont(&ok,QFont("隶书",10,10,false),this,"选择字体");if(ok){//ui->textEdit->setFont(f);ui->textEdit->setCurrentFont(f);}else{QMessageBox::information(this,"取消","用户取消选择字体");}
}void MainWindow::on_colorbtn_clicked()
{QColor c = QColorDialog::getColor(QColor("yellow"),this,"选择颜色");if(c.isValid()){ui->textEdit->setTextColor(c);}else{QMessageBox::information(this,"取消","用户取消了选择颜色");}
}void MainWindow::on_openbtn_clicked()
{QString fileName = QFileDialog::getOpenFileName(this,"选择文件","./","All(*.*);;Image (*.png *.xpm *.hpg);;Text (*.txt)");if(fileName.isNull()){QMessageBox::information(this,"提示","用户取消了选择文件");return ;}qDebug()<<fileName;QFile file(fileName);if(!file.isOpen()){if(!file.open(QFile::ReadWrite)){QMessageBox::critical(this,"失败","文件打开失败");return;}}QByteArray msg = file.readAll();file.close();ui->textEdit->setText(msg);}void MainWindow::on_savebtn_clicked()
{QString fileName = QFileDialog::getSaveFileName(this,"文件另存为","./","All(*.*);;Image (*.png *.xpm *.hpg);;Text (*.txt)");if(fileName.isNull()){QMessageBox::information(this,"提示","用户取消了保存文件");return ;}qDebug()<<fileName;QFile file(fileName);if(file.open(QFile::ReadWrite)){QByteArray msg = file.readAll();msg=ui->textEdit->toPlainText().toLocal8Bit();file.write(msg);}else{QMessageBox::information(this,"提示","文件另存为失败");}}

3>

头文件

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QTimerEvent>
#include <QTime>
#include <QTimer>
#include <QPushButton>
#include <QtTextToSpeech/QTextToSpeech>
#include <QVoice>
#include <QMessageBox>
#include <QElapsedTimer>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();//时钟函数void timerEvent(QTimerEvent *e) override;private:Ui::Widget *ui;QTimer *timer;int time_id;QTextToSpeech *speech = new QTextToSpeech(this);private slots://确定按钮void on_pushButton_clicked();//计时器事件函数void on_timer_timeout();//取消按钮void on_pushButton_2_clicked();
};
#endif // WIDGET_H

.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);this->timer=new QTimer;//0.1s检查一次time_id=startTimer(100);//连接定时器信号和自定义的槽函数connect(timer,&QTimer::timeout,this,&Widget::on_timer_timeout);}Widget::~Widget()
{delete ui;
}//启动按钮
void Widget::on_pushButton_clicked()
{timer->start(100);ui->textEdit->setReadOnly(true);ui->lineEdit->setReadOnly(true);
}//计时器函数
void Widget::on_timer_timeout()
{if(ui->lineEdit->text()==ui->label->text()){//播报员speech = new QTextToSpeech(this);QString text = ui->textEdit->toPlainText();speech->say(text);}
}//时钟
void Widget::timerEvent(QTimerEvent *event)
{if(event->timerId()==time_id){QDateTime sysDateTime=QDateTime::currentDateTime();QString dateTime=sysDateTime.toString("hh:mm:ss");ui->label->setText(dateTime);}
}//停止
void Widget::on_pushButton_2_clicked()
{QMessageBox box(QMessageBox::Warning,"Warning","是否要重设闹钟",QMessageBox::Yes|QMessageBox::No);int ret = box.exec();if(ret==QMessageBox::Yes){//关闭定时器timer->stop();//定时器关闭后行编辑器和文本编辑器重新有效ui->textEdit->setReadOnly(false);ui->lineEdit->setReadOnly(false);//清空之前设置的行文本编辑器ui->lineEdit->clear();speech->stop();}
}

http://www.lryc.cn/news/170727.html

相关文章:

  • PowerDesigner 与 mysql 同步数据
  • [python 刷题] 271 Encode and Decode Strings
  • [QT]day3
  • 《PostgreSQL事务管理深入解析》
  • 深度分析Oracle中的NULL
  • Python入门教学——类和对象
  • 【数据库系统概论】关系数据库中的关系数据结构
  • LabVIEW对Table中同一行数据分多次增加
  • 微信小程序实现删除功能
  • 整合Shiro+Jwt
  • Python 图形化界面基础篇:创建工具栏
  • 基于matlab实现的卡尔曼滤波匀加速直线运动仿真
  • windows Visual Studio 2022 opengl开发环境配置
  • 中国财政科学研究院党委书记、院长刘尚希一行莅临麒麟信安调研
  • 基于element-ui的年份范围选择器
  • 【已解决】您所使用的密钥ak有问题,不支持jsapi服务,可以访问该网址了解如何获取有效密钥。
  • JS操作数组方法学习系列(1)
  • 翻牌闯关游戏
  • CilckHouse创建表
  • 高级运维学习(八)Ceph 概述与部署
  • 【图像处理】VS编译opencv源码,并调用编译生成的库
  • STM32 EtherCAT 总线型(1 拖 4)步进电机解决方案
  • Postman应用——测试脚本Test Script
  • JS的网络状态以及强网弱网详解
  • 大数据-kafka学习笔记
  • 详述RPA项目管理流程,RPA项目管理流程是什么?
  • 爬虫 — Js 逆向
  • Python 网络爬取的时候使用那种框架
  • CentOS7安装源设置
  • pool = multiprocessing.Pool()报错:module object has no attribute Pool