Qt-练习1(事件循环)

一、练习要求

1、使用QT的IO读取文件;

2、以QSlider为基础,写一个进度条,显示文件读取的进度;

3、给QSlider布置qss样式,qss文件像css文件一样,分离出来。

二、源码

全部源码

源码目录:

1.1 、myeventlooper.h


class MyEventLooper : public QObject
{Q_OBJECT
public:explicit MyEventLooper();void moveToThread(QThread *thread);void startReadFile(QString filename);
signals://进度条成长信号,当percent=100时,表示完成void processGoSig(int percent);void loopSig();
public slots:void rcvLoopSig();private:bool readFlag=false;QFile file;unsigned int cntRead=0;
};

1.2、 myeventlooper.cpp

MyEventLooper::MyEventLooper()
{QObject::connect(this, &MyEventLooper::loopSig, this, &MyEventLooper::rcvLoopSig);
}void MyEventLooper::moveToThread(QThread *thread)
{QObject::moveToThread(thread);emit loopSig();
}void MyEventLooper::startReadFile(QString filename)
{qDebug() << "startReadFile" ;file.setFileName(filename);file.open(QFile::ReadOnly);readFlag=true;
}void MyEventLooper::rcvLoopSig()
{while(1){QThread::msleep(200);if(readFlag == false)continue;//1k1k的读取文件,为了看进度条的效果char data[1024];qint64 cnt=file.read(data, 1024);cntRead += cnt;unsigned int size=file.size();//if(cntRead >= size){file.close();readFlag=false;}emit processGoSig(cntRead*100/size);}
}

2.1、 widget.h

class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_btnCho_clicked();void on_btnLoad_clicked();void rcvProcessGoSig(int percent);private:Ui::Widget *ui;MyEventLooper* looper;QThread* t;
};

2.2、 widget.cpp

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);////t=new QThread(this);looper = new  MyEventLooper();QObject::connect(looper,&MyEventLooper::processGoSig, this, &Widget::rcvProcessGoSig);looper->moveToThread(t);t->start();
}Widget::~Widget()
{t->terminate();delete ui;
}void Widget::on_btnCho_clicked()
{QString filename=QFileDialog::getOpenFileName(this, "选择文件", "C:/Users/zhuorui/Desktop");qDebug() << "filename:" << filename;ui->label->setText(filename);
}void Widget::on_btnLoad_clicked()
{//加载文件//    QFile file(ui->label->text());//    if(!file.open(QFile::ReadOnly)){//        qDebug() << "文件读取失败";//        return ;//    }//    file.close()//读取文件中的内容looper->startReadFile(ui->label->text());
}void Widget::rcvProcessGoSig(int percent)
{qDebug() << "rcvProcessGoSig。 percent="<<percent;ui->slider->setValue(percent);if(percent >= 100){QMessageBox::information(this,"提示","文件读取完成");}
}

3.1、 main.cpp

int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;QFile file(":/style.css");file.open(QFile::ReadOnly);QString sheet=QString::fromLocal8Bit(file.readAll());file.close();qDebug() << "sheet:" << sheet;a.setStyleSheet(sheet);w.show();return a.exec();
}

3.2、 style.css

QSlider{background-color:red;
}/*QSlider::groove:horizontal{background-color:green;
}QSlider::sub-page{background-color:green;
}*/QSlider::sub-page:horizontal{background-color: rgba(0,255,0,200);
}QSlider::groove:horizontal{background-color: gray;
}

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

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

相关文章

解决Clang 18+不能链接GCC14编译的库的问题

前面笔者的博文MSYS2 MinGW64使用Protobuf新版本踩坑&#xff0c;有提到使用最新的Clang 19.1.4版本在MinGW下无法正常链接使用了Protobuf 28.3的项目&#xff0c;因为MinGW下的项目默认都是使用GCC来编译的&#xff0c;所以如果开发者使用Clang编译器&#xff0c;必然会出现链…

城市内涝监测预警系统解决方案-智慧排水

成因分析 气候变化 受全球气候变暖导致大气水循环加快&#xff0c;环流不稳定性增加&#xff0c;进一步引发极端降雨事件受城市热岛效应、雨岛效应的影响,强降雨常集中于城市且雨量多&#xff0c;强度大且雨量多。 排水系统不完善 城市发展快&#xff0c;城市防洪排涝工程&a…

Python:使用随机森林分类器进行模型评估:ROC 曲线与 AUC 指标计算

前言 这段代码的目标是使用 随机森林分类器&#xff08;Random Forest Classifier&#xff09; 来进行二分类任务&#xff0c;并基于每个数据子集计算 ROC 曲线&#xff08;Receiver Operating Characteristic Curve&#xff09;以及 AUC&#xff08;Area Under Curve&#xf…

【JAVA练习】力扣1232.缀点成线

题目&#xff1a; 解题思路&#xff1a; 直线上面的点满足公式&#xff1a;&#xff0c; 如果所有点在一条直线上&#xff0c;即任意两点的斜率相同&#xff0c;由于计算斜率存在精度的问题&#xff0c;可以将除法等价于乘法。 等价于 class Solution {public boolean che…

【SKFramework框架核心模块】3-12、网络请求模块

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享QQ群&#xff1a;398291828小红书小破站 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 【Unity3D框架】SKFramework框架完全教程《全…

C# 反射(Reflection)

文章目录 前言一、反射的优缺点&#xff08;一&#xff09;优点&#xff08;二&#xff09;缺点 二、反射的用途&#xff08;一&#xff09;查看特性&#xff08;attribute&#xff09;信息&#xff08;二&#xff09;审查集合中的各种类型并实例化&#xff08;三&#xff09;实…

Jdk配置、maven配置、gradle配置、Java开发常用的依赖库

一、配置JDK环境变量&#xff1a; 1. 安装 JDK 首先确保已经安装了 JDK。如果还没有安装&#xff0c;可以从 Oracle 官网 或者 AdoptOpenJDK 下载并安装合适的 JDK 版本。 我建议下载这个&#xff1a;https://adoptium.net/zh-CN/temurin/releases/?oswindows&archx64&…

【AI系统】FBNet 系列

FBNet 系列 本文主要介绍 FBNet 系列&#xff0c;在这一章会给大家带来三种版本的 FBNet 网络&#xff0c;从基本 NAS 搜索方法开始&#xff0c;到 v3 版本的独特方法。在本节中读者会了解到如何用 NAS 搜索出最好的网络和训练参数。 FBNet V1 模型 FBNetV1:完全基于 NAS 搜…

二十三、Linux可视管理之webmin和bt运维工具

1、webmin 基本介绍 Webmin 是功能强大的基于 Web 的 Unix/linux 系统管理工具。管理员通过浏览器访问 Webmin 的各种管理功能并完成相应的管理操作。除了各版本的 linux 以外还可用于&#xff1a;AIX、HPUX、Solaris、Unixware、Irix 和 FreeBSD 等系统安装webmin&配置 …

聚合支付系统/官方个人免签系统/三方支付系统稳定安全高并发 附教程

聚合支付系统/官方个人免签系统/三方支付系统稳定安全高并发 附教程 系统采用FastAdmin框架独立全新开发&#xff0c;安全稳定,系统支持代理、商户、码商等业务逻辑。 针对最近一些JD&#xff0c;TB等业务定制&#xff0c;子账号业务逻辑API 非常详细&#xff0c;方便内置…

Transformer真的是机器人技术的基础吗?

生成式预训练Transformer&#xff08;GPT&#xff09;被吹捧为将彻底改变机器人技术。但实际应用中&#xff0c;GPT需要庞大且昂贵的计算资源、冗长的训练时间以及&#xff08;通常&#xff09;非机载无线控制&#xff0c;诸多限制之下&#xff0c;GPT技术真的实用吗&#xff1…

使用脚本语言实现Lumerical官方案例——闪耀光栅(Blazed grating)(纯代码)(2)

接《使用脚本语言实现Lumerical官方案例——闪耀光栅(Blazed grating)(纯代码)(1)》 一、添加分析组 1.1 代码实现 #添加分析组 addanalysisgroup(); set("name", "grating_R"); set("x", 0); set("y", 2.5*um); addanalysisgrou…

【Java】异常处理见解,了解,进阶到熟练掌握

各位看官早安午安晚安呀 如果您觉得这篇文章对您有帮助的话 欢迎您一键三连&#xff0c;小编尽全力做到更好 欢迎您分享给更多人哦 大家好我们今天来学习Java面向对象的的抽象类和接口&#xff0c;我们大家庭已经来啦~ 目录 1.(throws和throw&#xff09;我们不管这个异常&…

Oracle数据库 用户管理模式下的冷备份与热备份

1. 用户管理模式下的冷备份 1.1. 通过数据库相关视图查询 查实例 select instance_name,version,status,archiver,database_status from v$instance; 查数据库 select dbid,name,log_mode from v$database; 查数据文件状态 select file_name,tablespace_name,status,o…

Solon 3.0.4 发布(Spring 的替代方案,备胎计划)

Solon 框架&#xff01; 面向全场景的 Java 应用开发框架。从零开始构建&#xff08;非 java-ee 架构&#xff09;&#xff0c;有灵活的接口规范与开放生态。新一代 Java 应用软件的生态基座。开放原子开源基金会&#xff0c;孵化项目。 追求&#xff1a; 更快、更小、更简单…

严格单元测试造就安全软件

在信息技术迅速发展的今天&#xff0c;软件在各个行业中扮演着至关重要的角色&#xff0c;尤其是在汽车行业&#xff0c;其中软件的可靠性和安全性直接影响到人们的生命安全。软件缺陷所带来的潜在风险不容小觑&#xff0c;尤其在涉及到自动驾驶和车辆控制等关键系统时&#xf…

基于CALMET诊断模型的高时空分辨率精细化风场模拟技术应用

在研究流场时&#xff0c;常用观测、模型风洞测试和数值模拟方法进行研究。但时常遇到研究区气象站点分布稀疏&#xff0c;不能代表周边复杂地形的风场。风洞模拟需要对地形进行实景的微缩&#xff0c;但实际过程中可能更关心近地表边界层的风场。风洞模拟一方面费用较高&#…

手写签名OCR识别-提升文档处理效率

随着数字化办公和智能化管理的普及&#xff0c;企业在日常业务中处理的各类单据和文件数量与日俱增。这些文件不仅包括了繁琐的文字信息&#xff0c;还涉及到重要的签名和印章等手写元素。尤其是在合同、协议、发票、审批单等文档中&#xff0c;手写签名不仅是身份确认的重要标…

Flutter:webview打开网页

官方文档地址 下方代码来自官方文档&#xff0c;先简单记录下如何通过webview打开某个http地址 添加权限&#xff1a;android/app/src/main/AndroidManifest.xml <uses-permission android:name"android.permission.INTERNET"/>pubspec.yaml webview_flutter: …

WPF+LibVLC开发播放器-音量控制和倍速控制

界面 界面上增加音量的控件和倍速控制控件 音量控制 主要也是一个Slider进度条控件来实现音量调节 我们这里设置默认的最大值为100&#xff0c;默认Value值也为100&#xff0c;默认声音开到最大 这里目前完全由前端控制音量调节&#xff0c;可以直接使用ValueChanged事件实…