QT--day3

news2024/11/26 23:31:38

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

widget.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_fontbtn_clicked()
{
    bool ok;
    //调用grtfont获取一个字体对话框
    QFont f=QFontDialog::getFont(&ok,
                         QFont("隶书",10,10,false),
                         this,
                         "选择字体");
    //对OK进行判断,判断用户是否选择字体
    if(ok)
    {
        //用户选择字体
        //将选中的字体,进行设置
        //设置全部文字字体
        //ui->textEdit->setFont(f);

        //设置选中的字体
        ui->textEdit->setCurrentFont(f);
        //设置选中字体倾斜
        //ui->textEdit->setFontItalic(true);
    }else
    {
        //用户没有选择字体
        QMessageBox::information(this,"取消",
                                 "用户取消选择字体");
    }
}
//颜色按钮对应的槽函数
void Widget::on_colorbtn_clicked()
{
    QColor c=QColorDialog::getColor(QColor("green"),
                                    this,
                                    "选择颜色");
    if(c.isValid())
    {
        //设置字体的颜色
        ui->textEdit->setTextColor(c);
        //设置字体的背景的颜色
        ui->textEdit->setTextBackgroundColor(c);
    }else
    {
        QMessageBox::information(this,"取消","用户取消了选择颜色");
    }
}

void Widget::on_openbtn_clicked()
{
    QString fileName = QFileDialog::getOpenFileName(this,
                                                    "选择文件",
                                                    "./",
                                                    "ALL(*.*);;Images(*.png *.xpm *.jpg)::Text file (*.text)");
    //判断是否选择文件
    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界面
    ui->textEdit->setText(msg);

}
//保存
void Widget::on_savebtn_clicked()
{
    QString fileName = QFileDialog::getSaveFileName(this,
                                                    "保存文件",
                                                    "./",
                                                    "ALL(*.*);;Images(*.png *.xpm *.jpg)::Text file (*.text)");

    if(fileName.isNull())
    {
        QMessageBox::information(this,"提示","用户取消了保存");
        return;
    }

    qDebug()<<fileName;
    QFile file(fileName);
    if(!file.isOpen())
    {
        //调用打开文件操作
        if(!file.open(QFile::ReadWrite))
        {
            QMessageBox::critical(this,"失败","文件打开失败");
            return;
        }
    }
    QString text =ui->textEdit->toPlainText();
    file.write(text.toUtf8());
    file.close();

}

3、定时器播报

wiget.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    timer_id = this->startTimer(1000);
    tt=new QTextToSpeech(this);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::timerEvent (QTimerEvent *e)
{
    if(e->timerId()==timer_id)
    {
        QTime sys_t =QTime::currentTime();
        QString t=sys_t.toString("hh.mm");
        ui->label->setText(t);
    }else if(e->timerId()==timer_id2)
    {
        QString t=ui->lineEdit->text();
        QString t1=ui->label->text();
        if(t==t1)
        {
            QString a1=ui->textEdit->toPlainText();
            tt->say(a1);
        }

    }



}
void Widget::on_pushButton_clicked()
{
    timer_id2 = this->startTimer(3000);
}

void Widget::on_pushButton_2_clicked()
{
    tt->stop();
    this->killTimer(timer_id2);
}

wiget.h

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1023532.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp 实现不同用户展示不同的tabbar(底部导航栏)

一、背景 最近在做一个uniapp开发的小程序遇到一个需求&#xff0c;希望不同用户登录后展示不同的tabbar页面&#xff0c;但是uniapp项目中的pages.json是只有一个list数组的&#xff0c;并且是不能写成动态效果&#xff0c;为了实现这个需求&#xff0c;便自定义了tabbar组件 …

一文读懂SSL、TLS和mTLS的通信安全协议

今天让我们深入探讨一下SSL、TLS和mTLS等一系列重要的通信安全协议。尽管从整体系统设计的角度来看,这个主题可能并不是至关重要,但仍然值得我们深入了解。 1. SSL协议 SSL,即安全套接字层(Secure Socket Layer),是一种通信协议,旨在加密和保护互联网通信的安全性。虽…

从业二十年的测试工程师今天给大家分享postman的使用技巧以及快捷键的精髓

一、Postman是什么 Postman是chrome的一款插件,用于做接口请求测试,无论是前端,后台还是测试人员,都可以用postman来测试接口,用起来非常方便。 二、Postman安装 官网下载(FQ) Download Postman | Get Started for Free 三、Postman常用功能 安装好之后&#xff0c;我们先打开…

React(react18)中组件通信03——简单使用 Context 深层传递参数

React&#xff08;react18&#xff09;中组件通信03——简单使用 Context 深层传递参数 1. 前言1.1 React中组件通信的其他方式1.2 引出 Context 2. 简单例子3. 语法说明3.1 createContext(defaultValue)3.2 value3.3 useContext(SomeContext) 4. 总结4.1 Context4.1.1 Context…

【Java 基础篇】Java transient 关键字详解:对象序列化与非序列化字段

在 Java 编程中&#xff0c;我们经常需要将对象序列化为字节流以便于存储或传输&#xff0c;或者将字节流反序列化为对象以恢复其状态。然而&#xff0c;并不是所有对象的所有属性都应该被序列化。有些属性可能包含敏感信息&#xff0c;或者它们只在内存中有意义。在这些情况下…

每日练习-7

目录 一、选择题 二、算法题 1、两种排序方法 2、求最小公倍数 一、选择题 1、 解析&#xff1a; 指针和引用是C中两种不同的变量类型&#xff0c;它们都可以用来访问或修改其他变量的值&#xff0c;但是它们有以下几个区别&#xff1a; 引用必须在定义时初始化&#xff0c…

Terminnal will be login out after 20 second

锐捷交换机&#xff0c;命令敲着敲着 &#xff0c;就提示20秒后将中断 &#xff0c;show ip ssh 查看也一下也没有什么特殊的。 于是查看了一下VTY下的配置 absolute-timeout 5 ,这句话是什么意思呢 &#xff1f; 5分钟强制退出 &#xff01; 改进方法&#xff1a; (config)#…

为什么企业要选择使用报修工单管理系统?

报修管理系统是一种强大的工具&#xff0c;它为企业提供了一种方便、高效的方式来报告设备故障和异常情况&#xff0c;以便及时地反馈给相关的人员。这种系统不仅可以帮助企业更好地管理和跟踪设备的维护和维修工作情况&#xff0c;还可以对所有的维修信息进行统计和分析&#…

天视通等小众冷门摄像机接入安防监控系统EasyCVR平台的常见兼容问题及解决方法

众所周知&#xff0c;视频监控系统EasyCVR安防视频综合管理平台支持多类型设备、多协议方式接入&#xff0c;包括市场主流标准协议国标GB28181、RTMP、RTSP/Onvif协议等&#xff0c;以及厂家私有协议&#xff0c;如海康SDK、大华SDK、海康Ehome等。平台可兼容市面上绝大多数品牌…

【Java】类和对象知识

类和对象的基础知识 命名规则 类名统一使用大驼峰方法和成员变量统一使用小驼峰 定义一个类的时候注意的事项 1. 一般一个文件当中只定义一个类2. main方法所在的类一般要使用public修饰(注意&#xff1a;Eclipse默认会在public修饰的类中找main方法)3. public修饰的类必须…

英语——分享篇——每日100词——101-200

August——au我(谐音)gu姑(拼音)st沙滩(拼音)——八月份我和姑姑一起去沙滩 December——Dece第三(谐音)mb面包(拼音)er儿(拼音)——第三块面包是儿子在十二月买的

爬虫 — Scrapy-Redis

目录 一、背景1、数据库的发展历史2、NoSQL 和 SQL 数据库的比较 二、Redis1、特性2、作用3、应用场景4、用法5、安装及启动6、Redis 数据库简单使用7、Redis 常用五大数据类型7.1 Redis-String7.2 Redis-List (单值多value)7.3 Redis-Hash7.4 Redis-Set (不重复的)7.5 Redis-Z…

【python基础】—函数def()的定义与调用、参数、return返回值及变量作用域

文章目录 定义函数&#xff1a;def()语句调用函数&#xff1a;输入函数名和参数对应的值参数return 返回值变量作用域 定义函数&#xff1a;def()语句 语法&#xff1a; def 函数名(参数1,参数2,.....,参数n): 函数体 return 语句举例&#xff1a; def hello(name):print(n…

【MySQL系列】- MySQL自动备份详解

【MySQL系列】- MySQL自动备份详解 文章目录 【MySQL系列】- MySQL自动备份详解一、需求背景二、Windows mysql自动备份方法2.1 复制date文件夹备份实验备份环境创建bat直接备份脚本 2 .2 mysqldump备份成sql文件创建mysqldump备份脚本 2 .3 利用WinRAR对MySQL数据库进行定时备…

Android:报错“Transform‘s input file does not exist”

一、前言&#xff1a; android运行的时候出现如下错误&#xff1a;Transform output file C:\android\Enjoy\app\libs\xxxx.jar does not exist.刚开始我也很懵&#xff0c;我理解的事什么文件没有。上网查完资料&#xff0c;发现是添加依赖的时候有问题。 二、解决方案&…

Redis实战:Redis在Java中的基本使用

本片将介绍 Redis 在 Java 中的基本使用 文章目录 1、使用jedis操作redis1.1、Jedis简介1.2、引入jedis的Maven依赖1.2、获取连接1.3、使用实例 2、对于JedisPooled的使用2.1、使用JedisPooled2.2、关于连接池 3、SpringBoot下使用Redis3.1、引入Maven依赖3.2、配置Redis连接3.…

C语言入门log03

2023.9.19 周二 江苏 软件&#xff1a;visual studio 2017 &#xff1b;注释快捷键 ctrlkc&#xff1b;取消ctrlku;运行快捷键 ctrlf5 B站视频 P4 按位取反~ int main() {//int arr[] {1,2,3,4,5,6};//4*624//printf("%d\n",sizeof(arr));//24 数组大小//print…

第14章 结构和其他数据形式

本章介绍以下内容&#xff1a; 关键字&#xff1a;struct、union、typedef 运算符&#xff1a;.、-> 什么是C结构&#xff0c;如何创建结构模板和结构变量 如何访问结构的成员&#xff0c;如何编写处理结构的函数 联合和指向函数的指针 设计程序时&#xff0c;最重要的步骤之…

面向面试知识--Lottery项目

面向面试知识–Lottery项目 1.设计模式 为什么需要设计模式&#xff1f; &#xff08;设计模式是什么&#xff1f;优点有哪些&#xff1f;&#xff09; 设计模式是一套经过验证的有效的软件开发指导思想/解决方案&#xff1b;提高代码的可重用性和可维护性&#xff1b;提高团…

DAQ高频量化平台:引领Ai高频量化交易模式变革

近年来&#xff0c;数字货币投资市场掀起了一股热潮&#xff0c;以&#xff08;BTC&#xff09;为代表的区块链技术带来了巨大的商业变革。数字资产的特点&#xff0c;如无国界、无阶级、无门槛、高流动性和高透明度&#xff0c;吸引了越来越多的人们的关注和认可&#xff0c;创…