Qt(day3)

2023-11-19

思维导图

小练习 

second.h

#ifndef SECOND_H
#define SECOND_H

#include <QWidget>
#include<QLabel>
#include<QLineEdit>
#include<QPushButton>
#include<QTimerEvent>
#include<QTime>
#include<QTextEdit>
#include<QTextToSpeech>

namespace Ui {
class Second;
}

class Second : public QWidget
{
    Q_OBJECT

public slots:
    void jump_slot();
    void startbtn_slot();
    void endbtn_slot();

public:
    explicit Second(QWidget *parent = nullptr);
    ~Second();

    void timerEvent(QTimerEvent *event) override;

private:
    Ui::Second *ui;
    QLabel *lab;
    QLineEdit *ledit;
    QPushButton *startbtn;
    QPushButton *endbtn;
    QTextEdit *tedit;

    int timer_id;   //定时器id

    QTextToSpeech *speecher;
};

#endif // SECOND_H

second.cpp

#include "second.h"
#include "ui_second.h"

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

    speecher =new QTextToSpeech(this);  //为播报员实例化空间

    this->setFixedSize(QSize(800,700)); //固定文件框的大小
    this->setWindowTitle("定时器");   //设置文件的标题

    lab=new QLabel(this);   //创建一个lab
    lab->resize(300,220);   //设置lab大小
    lab->move(50,50);       //设置lab的位置
    lab->setStyleSheet("background-color:skyblue;font-weight:bold;font-size:60px;");

    ledit=new QLineEdit(this);  //创建一个ledit
    ledit->resize(300,100);   //设置ledit大小
    ledit->move(lab->x()+400,lab->y());       //设置ledit的位置


    startbtn=new QPushButton(this);  //创建一个startbtn
    startbtn->resize(140,100);   //设置startbtn大小
    startbtn->move(ledit->x(),ledit->y()+120);       //设置startbtn的位置
    startbtn->setText("start");     //设置startbtn的文本

    endbtn=new QPushButton(this);  //创建一个endbtn
    endbtn->resize(140,100);   //设置endbtn大小
    endbtn->move(ledit->x()+160,ledit->y()+120);       //设置endbtn的位置
    endbtn->setText("end");     //设置endbtn的文本

    tedit=new QTextEdit(this);  //创建一个tedit
    tedit->resize(700,300);
    tedit->move(lab->x(),lab->y()+300);


    connect(startbtn,&QPushButton::clicked,this,&Second::startbtn_slot);
    connect(endbtn,&QPushButton::clicked,this,&Second::endbtn_slot);
}

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

void Second::jump_slot(){
    this->show();
}

void Second::startbtn_slot(){
    timer_id=this->startTimer(1000);
}

void Second::endbtn_slot(){
    this->killTimer(timer_id);
}

void Second::timerEvent(QTimerEvent *event){
    QTime sys_t=QTime::currentTime();
    QString t=sys_t.toString("hh:mm:ss");

    if(event->timerId()==timer_id){
        lab->setText(t);
    }
    if(t==ledit->text()){
        speecher->say(tedit->toPlainText());
    }

}

 效果图:

文本编辑器的保存工作

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QFontDialog>      //字体对话框类
#include<QFont>            //字体类
#include<QMessageBox>
#include<QColorDialog>     //颜色对话框类
#include<QColor>           //颜色类
#include<QFileDialog>       //文件对话框类
#include<QDebug>
#include<QFile>              //文件类

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_fontBtn_clicked();

    void on_colorBtn_clicked();

    void on_openBtn_clicked();

    void on_saveBtn_clicked();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

weight.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;             //返回用户是否选中字体的变量

    //直接调用静态成员函数调出字体对话框
    QFont f =  QFontDialog::getFont(&ok,                           //返回是否选中字体
                         QFont("隶书", 2, 10, false),    //初始字体
                         this,                           //父组件
                         "字体对话框");                      //对话框标题

    //要对ok进行判断,如果用户点击的取消,则ok为false,否则为true
    if(ok)
    {
        //说明用户选中了字体,直接使用字体即可
        //将该字体加载到文本上面
        //ui->textEdit->setFont(f);           //将该组件中的全部字体进行设置新字体

        ui->textEdit->setCurrentFont(f);          //将组件中当前选中的字体进行设置,其余字体不设置

    }else
    {
        //说明用户没有选中字体
        QMessageBox::information(this,"提示","用户没有选中字体");
    }
}

//颜色按钮对应的槽函数
void Widget::on_colorBtn_clicked()
{
    QColor c = QColorDialog::getColor(QColor(0,255,255),    //初始颜色
                                      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(*.*);; Img(*.png *.jpg *.xpm);; 文本(*.txt)");//过滤器

    qDebug()<<fileName;

    //文件操作
    //1、实例化一个文件对象
    QFile file(fileName);          //使用有参构造构造一个文件对象
    if(!file.exists())           //判断文件是否存在
    {
        return;
    }

    //2、打开文件
    if(!file.open(QFile::ReadWrite))       //判断文件是否打开成功
    {
        return;
    }

    //3、从文件中读取数据
    QByteArray msg = file.readAll();

    //4、关闭文件
    file.close();

    //将从文件中读取的内容展示到ui界面上
    ui->textEdit->setText(QString::fromLocal8Bit(msg));

}

//保存按钮对应的槽函数
void Widget::on_saveBtn_clicked()
{
    //获取路径
    QString fileName = QFileDialog::getSaveFileName();

    //实例化文件对象
    QFile file(fileName);
    //打开文件
    if(!file.open(QFile::WriteOnly))
    {
        return;
    }

    //将ui界面上的数据读取下来
    QString msg = ui->textEdit->toPlainText();

    //将信息写入到文件中
    file.write(msg.toLocal8Bit());

    //关闭文件
    file.close();
}

效果图:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt(day3) 的相关文章

  • 如何从浮点数组创建新的 QImage

    我有一个代表图像的浮点数数组 列在前 我想在 QGraphicsSecene 上将图像显示为 QPixmap 为了做到这一点 我尝试使用 QImage 构造函数 QImage const uchar data int width int h
  • PyQt - 如何从给定的小部件获取顶级父级?

    给定的小部件如何访问它最旧的父级 即顶级小部件 我需要 showMinimized it 现在我正在使用 self parent parent parent showMinimized 但这似乎不是最好的方法 如果它移动了 我需要手动更改父
  • 如何在 QT 中绘制点?

    我正在用 QT 用 C 编写一个应用程序 其中有 n 个点并计算它的凸包 然而 一旦计算出来 我不知道如何绘制点并绘制船体的边界 制作菜单按钮等很简单 但我不确定我是否知道执行此操作的工具 你怎么做到这一点 图形视图 addEllipse
  • 如何使 Python、QT 和 Webkit 在无头服务器上工作?

    我有 Debian Linux 服务器 我用它来做各种事情 我希望它能够完成一些我需要定期完成的网络抓取工作 这段代码可以是在这里找到 http bit ly QeqvzX import sys from PyQt4 QtGui impor
  • Qt 人工鼠标点击无法正常工作

    小玩具应用程序可以在这里找到 http gist github com 517445 http gist github com 517445 我正在尝试将人工鼠标事件发送到小部件 我使用QApplication sendEvent为此 接下
  • 如何在 OS X 上的 Qt 应用程序中设置应用程序图标,足以进行分发?

    跟进这个答案 https stackoverflow com a 20918932 368896 to 这个问题 https stackoverflow com questions 20909341 what is the fastest
  • 获取 QListView 中所有可见项目的简单方法

    我正在尝试使用 Qt Framework 开发一个图像库应用程序 应用程序从所选文件夹加载所有图像 并使用 QListView 控件显示这些图像 但现在我想通过仅加载用户可见的图像来减少内存消耗 由于没有直接函数来获取视图中的所有可见项目
  • 使用 CMake 编译时更改头文件位置会导致缺少 vtable 错误

    对于一个大型 C 项目 我需要从 qmake 过渡到 CMake 但是在处理一个玩具示例时 我遇到了一些我不理解的行为 示例代码具有单个头文件 当该头文件移动到子目录中时 我收到 MainWindow 类缺少 vtable 的错误 CMak
  • Retina 显示屏中具有 QOpenGLWIdget 的 Qt MainWindow 显示错误大小

    我有一个 Qt 应用程序MainWindow 我嵌入一个QOpenGLWidget在里面 一切正常 直到我开始使用 Apple Retina 显示屏并在高 DPI 模式下运行我的应用程序 我的QOpenGLWidget只是它应该具有的大小的
  • QMainWindow 上的 Qt 布局

    我设计了一个QMainWindow with QtCreator s设计师 它由默认的中央小部件 aQWidget 其中包含一个QVBoxLayout以及其中的所有其他小部件 现在我想要的一切就是QVBoxLayout自动占据整个中央小部件
  • 如何在Qt 5中的paintEvent上使用mouseMoveEvent?

    我是 Qt 和 c 的新手 所以我遇到了一些困难 我正在尝试创建一个小部件 它可以获取 mouseMoveEvent 位置并在鼠标位置的像素图上绘制椭圆 下面你可以看到代码 include myimage h include
  • 如何声明一个带有成员函数指针的函数

    我有一个类 其中的成员变量指向库对象 class myClassA private libraryClass libraryObject 该库类发出事件 以字符串为特征 并提供一种机制 允许客户端类指定在发出事件时应调用的成员函数 因此在m
  • 使用 OpenGL 渲染 QImage

    与我相关的其他问题 https stackoverflow com questions 20126354 render qimage from sooffscreenrenderer in qglwidget 我认为更核心的问题是 如何渲染
  • 如何在针对 Windows XP 的情况下使用 VS2012 构建 Qt 4/5?

    我正在尝试使用 Visual Studio 2012 构建 Qt 4 8 5 Qt 5 2 1 针对 Windows XP SDK v7 1a 使用 VS2102 编译时 源代码与 SDK v7 1a 存在各种不兼容性 因此无法开箱即用 这
  • 覆盖 QWebView 中的页面回复

    我试图在 Qt 的 QWebView 中拦截页面 表单请求 并在某些情况下使用替代内容进行响应 QNetworkReply ngcBrowser createRequest Operation operation const QNetwor
  • 连接到 QNetworkReply::error 信号

    我正在使用 Qt5 的新连接语法 QNetworkReply 有一个名为error http qt project org doc qt 5 0 qtnetwork qnetworkreply html error 2还有一个函数叫做err
  • Qt QML 数据模型似乎不适用于 C++

    我一直在使用中的示例http doc qt digia com 4 7 qdeclarativemodels html http doc qt digia com 4 7 qdeclarativemodels html这是 QML 声明性数
  • QFileSystemModel setRootPath

    我正在尝试创建一个 Qt 应用程序来显示文件夹 Mac OS 中的 Users 文件夹 的内容 这是代码 QFileSystemModel dirModel new QFileSystemModel dirModel gt setRootP
  • 为什么 QT 设计器重新调整大小或不允许我缩小或展开小部件或按钮?

    很多时候 在使用 QT 设计器时 我发现自己需要通过缩小或扩展来调整事物的大小 每当我尝试这样做时 程序都不允许我这样做 而只是恢复到将对象放置在窗口中时给我的原始默认大小 无论我的布局如何 为什么要这样做 是否有可能改变这一点 以便我可以
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某

随机推荐

  • linux下查看redis是否正常运行 和设置密码

    一 查找redis conf文件 我们服务器已经安装了redis 现在通过命令查看下redis的进程 root lnp ps aux grep redis root 7374 0 0 0 0 145312 7524 Ssl 16 37 0
  • Error:(28, 8) java: 类Demo01Array是公共的, 应在名为 Demo01Array.java 的文件中声明

    public 修饰的class类必须与 Java文件名一致 若声明的class非public则文件名无需与类名相同 必须一致
  • Android原生系统真的那么好用吗?安卓原生系统吊打其他系统,因为有Google-Play

    Android原生系统真的那么好用吗 这种问题当然是否定的 原生 Android 指的是直接基于 AOSP 构建的而非手机厂商出厂固件修改的第三方 ROM 但包括 Nexus Pixel 或其它被 Google 直接支持的手机的可能是闭源的
  • 你们所不了解的程序员思维黑洞

    如果你也是程序员 看看你中了几条 1 数数会从 0 开始数起 比如 程序员吵架的时候会说 我数三下 你再不闭嘴 我就不客气了 零 一 二 或者 在列清单的时候 编号会从 0 开始写 为什么会这样 因为 0 是数组的第一个元素 在经过无数次的
  • 1分钟部署自己的AutoGPT

    4 月初 AutoGPT 引发热潮 短短一个多月 它已经在全球最大的开源软件社区 Github 上累积了131 000颗星 其热度依然持续上升 我体验后发现 虽然基于 3 5 模型的 AutoGPT 还无法最终生成完整的报告 但是它确实可以
  • MySQL高级学习笔记(一)

    文章目录 MySQL高级学习笔记 一 1 索引 1 1索引概述 1 2索引优势劣势 1 3索引结构 1 3 1BTREE 结构 1 3 2B TREE 结构 1 3 3MySQL中的B Tree 1 4索引分类 1 5索引语法 1 5 1
  • agplv3_我是否需要根据AGPLv3许可证提供对源代码的访问?

    agplv3 GNU Affero通用公共许可证版本3 AGPLv3 是与GPLv3几乎相同的copyleft许可证 两种许可证具有相同的版权保留范围 但在一个重要方面存在实质性差异 AGPLv3的第13节规定了GPLv2或GPLv3中不存
  • 断点续传----位图

    首先了解什么是位图和他的工作原理 定义 位图就是bitmap的缩写 所谓bitmap 就是用每一位来存放某种状态 适用于大规模数据 该数据都是不重复的简单数据 通常是用来判断某个数据存不存在的 工作原理 查找一个数是否存在 其实答案就是存在
  • Cmake的使用

    简介 CMake是一个跨平台的安装 编译 工具 可以用简单的语句来描述所有平台的安装 编译过程 他能够输出各种各样的makefile或者project文件 能测试编译器所支持的C 特性 类似UNIX下的automake 只是 CMake 的
  • matlab 右侧,matlab错误提示无法执行赋值,因为左侧和右侧的元素数目不同

    compute pdf of fpe corr to Levy noise with absorbing BC in a bounded symmetric domain r r central differencing for 2nd o
  • UE4 UE4 C++ Gameplay Abilities 的AttributeSet和GameplayEffect

    UE4 UE4 C Gameplay Abilities 的AttributeSet和GameplayEffect GAS参考文档 仅是个人理解 参考 AttributeSet是设置玩家属性的比如生命值 最大生命值 GameplayEffe
  • GPU压力测试和故障定位

    压力测试 获取gpu burn https codeload github com wilicc gpu burn zip master 解压缩 unzip gpu burn master zip 进入目录编译 cd gpu burn ma
  • 关于python爬虫的准备工作

    目录 1 什么是网络爬虫 2 准备工作 1 什么是网络爬虫 百度百科所给注释如下 网络爬虫 又称为网页蜘蛛 网络机器人 在FOAF社区中间 更经常的称为网页追逐者 是一种按照一定的规则 自动地抓取万维网信息的程序或者脚本 另外一些不常使用的
  • vm使用PE安装系统(2)

    接上次教程 vm使用PE安装系统 1 提要 此虚拟机安装方法适用于所有系统格式如ISO ESD GHO WIM等系统格式 第一步 打开DG硬盘分区 选择左侧栏进行的 HD0 右键选择快速分区 一般情况下选择自定义选择两个分区 然后右边内容栏
  • 芯片开发语言的简单区别介绍。Verilog、VHDL、System Verilog、SystemC、Matlab、C/C++等

    芯片开发语言的简单区别介绍 芯片设计前端的流程很长 和芯片前端相关的语言也很多 比如Verilog VHDL System Verilog SystemC Matlab C C 等等 但没有一个语言能够做到适合于整个前端流程 每种语言都有适
  • 【Kubernetes运维篇】零故障升级Pod健康探测详解

    文章目录 一 Pod健康探测介绍 1 三种容器探测方法 2 常用三种探测探针 3 探针相关属性说明 二 探测案例 1 Pod启动探测案例 startupProbe 2 Pod存活探测案例 livenessProbe 3 Pod就绪探测案例
  • QT QComboBox使用详解

    本文详细的介绍了QComboBox控件的各种操作 例如 下拉框添加内容 默认显示 获取下拉框总行数 获取选中索引 获取当前内容 清除列表 重绘下拉框等操作 本文作者原创 转载请附上文章出处与本文链接 QComboBox控件全面详解目录 1
  • RNA 31. SCI文章临床蛋白质组肿瘤在线数据挖掘神器(CPTAC)

    桓峰基因公众号推出转录组分析教程 有需要生信的老师可以联系我们 转录分析教程整理如下 RNA 1 基因表达那些事 基于 GEO RNA 2 SCI文章中基于GEO的差异表达基因之 limma RNA 3 SCI 文章中基于T CGA 差异表
  • 框架学习——带你了解SpringBoot框架

    目录 一 SpringBoot简介 1 1 原有Spring优缺点分析 1 1 1 Spring的优点分析 1 1 2 Spring的缺点分析 1 2 SpringBoot的概述 1 2 1 SpringBoot的特点 1 2 2 Spri
  • Qt(day3)

    思维导图 小练习 second h ifndef SECOND H define SECOND H include