news 2026/2/8 21:28:58

QT第四个程序 - 小学数学10以内加减多级计算训练程序

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
QT第四个程序 - 小学数学10以内加减多级计算训练程序

一、W004.h

#ifndef W004_H #define W004_H #include <QWidget> #include<QTimer> #include<QDateTime> class W004 : public QWidget { Q_OBJECT public: W004(QWidget *parent = nullptr); ~W004(); private: QDateTime StartTime; QTimer *TTT; }; #endif // W004_H

二、W004.cpp

#include<QDateTime> #include<QDir> #include<QFile> #include "w004.h" #include<QGuiApplication> #include<QScreen> #include <QRandomGenerator> #include<QChar> #include<QLabel> #include<QLineEdit> #include<qmath.h> #include<QDebug> #include<QComboBox> #include<QPushButton> #include<QGroupBox> #include<QFont> #include"Cacler.h" #include<QList> #include<QTimer> W004::W004(QWidget *parent) : QWidget(parent) { TTT = new QTimer(this); TTT->setInterval(1000); TTT->stop(); QChar opList[]={'+','-'}; setFixedSize(370,900); setWindowTitle("数学练习(0-10)加减法"); QLabel * l1=new QLabel("题目量:",this); l1->resize(50,45); l1->move(10,0); l1->setAlignment(Qt::AlignVCenter); QComboBox *c1=new QComboBox(this); c1->resize(60,45); c1->move(70,0); c1->addItems({"5","10","15","20"}); c1->setFont(QFont("黑体",12)); QLabel * l2=new QLabel("运算量:",this); l2->resize(50,45); l2->move(140,0); l2->setAlignment(Qt::AlignVCenter); QComboBox *c2=new QComboBox(this); c2->resize(60,45); c2->move(210,0); c2->addItems({"1","2","3","4","5","6","7","8","9","10"}); c2->setFont(QFont("黑体",12)); QPushButton * btnsel=new QPushButton("生成",this); btnsel->resize(80,45); btnsel->move(280,0); btnsel->setFont(QFont("黑体",12)); QGroupBox *grp =new QGroupBox("练习题",this); grp->resize(350,this->height()-10-40); grp->move(10,40); this->move(QGuiApplication::primaryScreen()->size().width()/2-this->width()/2, QGuiApplication::primaryScreen()->size().height()/2-this->height()/2); for (int var = 0; var < 20; var++) { QLabel * Tl=new QLabel("-",grp); Tl->resize(270,37); Tl->move(10,20+var*38); Tl->setProperty("qName","L"+QString::number(var)); if(var%2==0) Tl->setStyleSheet("QLabel { border : 1px solid white; }"); else Tl->setStyleSheet("QLabel { border : 1px solid gray; }"); Tl->setFont(QFont("黑体",16)); Tl->setAlignment(Qt::AlignRight|Qt::AlignVCenter); // qDebug() << var << Tl->property("qName"); QLineEdit *Tt=new QLineEdit("",grp); Tt->resize(50,37); Tt->move(290,20+var*38); Tt->setProperty("qName","T"+QString::number(var)); Tt->setProperty("qResult",""); Tt->setFont(QFont("黑体",15)); //Tt->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); //Tt->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); Tt->setAlignment(Qt::AlignLeft|Qt::AlignVCenter); // qDebug() <<var<< Tt->property("qName"); } QLabel * TR=new QLabel("0",grp); TR->resize(180,50); TR->setAlignment(Qt::AlignVCenter|Qt::AlignCenter);// TR->move(10,grp->height()-60); TR->setProperty("Name","Result"); TR->setFont(QFont("黑体",12)); // TR->setStyleSheet("QLabel { border : 1px solid dimgray; }"); QLabel * TR1=new QLabel("0",grp); TR1->resize(50,50); TR1->setAlignment(Qt::AlignVCenter|Qt::AlignCenter);// TR1->move(190,grp->height()-60); TR1->setProperty("Name","Result"); TR1->setFont(QFont("黑体",20)); TR1->setStyleSheet("QLabel { color: blank; }"); QPushButton * btnPing=new QPushButton("评分",grp); btnPing->resize(95,50); btnPing->setFont(QFont("黑体",18)); btnPing->move(245,grp->height()-60); btnsel->setEnabled(true); btnPing->setEnabled(false); connect(btnsel,&QPushButton::clicked,this,[=](){ const QObjectList& cls=grp->children(); int rows=c1->currentText().toInt(); int ops=c2->currentText().toInt(); TR->setText(""); TR1->setText(""); TR1->setStyleSheet("QLabel { color: blank; }"); Cacler cl; for(int i=0;i<20;i++) { if(i<rows) { QString tm; int b=QRandomGenerator::global()->bounded(0,1); int a=0; for(int j=0;j<ops;j++) { a=QRandomGenerator::global()->bounded(0,10); tm.append(QString::number(a)); tm.append(opList[b]); b=QRandomGenerator::global()->bounded(0,1); } a=QRandomGenerator::global()->bounded(0,10); tm.append(QString::number(a)); QString tr=cl.Cacle(tm); for(QObject *var : cls) { // qDebug() << i << var->property("qName"); if(var->property("qName")==("L"+QString::number(i))) { QLabel * l1= qobject_cast<QLabel*>(var); l1->setText(tm+"="); } else if(var->property("qName")==("T"+QString::number(i))) { QLineEdit *t1= qobject_cast<QLineEdit*>(var); t1->setProperty("qResult",tr); t1->setProperty("qQuest",tm); t1->setStyleSheet("QLineEdit { color: black; }"); t1->setText(""); } } } else { for(QObject *var : cls) { // qDebug() << i << var->property("Name"); if(var->property("Name")==("L"+QString::number(i))) { QLabel * l1= qobject_cast<QLabel*>(var); l1->setText("-"); } else if(var->property("Name")==("T"+QString::number(i))) { QLineEdit *t1= qobject_cast<QLineEdit*>(var); t1->setProperty("Result",""); } } } } StartTime=QDateTime::currentDateTime(); TTT->start(); btnsel->setEnabled(false); btnPing->setEnabled(true); c1->setEnabled(false); c2->setEnabled(false); }); connect(btnPing,&QPushButton::clicked,this,[=](){ const QObjectList& cls=grp->children(); int rows=c1->currentText().toInt(); double onefen=100/rows; int rr=0; int nr=0; double sumfen=0; TTT->stop(); QDateTime EndTime=QDateTime::currentDateTime(); QString data; data.append(StartTime.toString("yyyy-MM-dd HH:mm:ss")+"至"); data.append(EndTime.toString("yyyy-MM-dd HH:mm:ss")+"\r\n训练日志:\r\n"); for(int i=0;i<20;i++) { for(QObject *var : cls) { if(var->property("qName")==("T"+QString::number(i))) { qDebug() << i << var->property("qName"); QLineEdit *t1= qobject_cast<QLineEdit*>(var); QString r1=t1->property("qResult").toString(); QString r2=t1->text(); if(r1!="") { if(r1.toInt()==r2.toInt()) { rr+=1; sumfen+=onefen; t1->setStyleSheet("QLineEdit { color: green; }"); } else { nr+=1; t1->setStyleSheet("QLineEdit { color: red; }"); data.append("错题:"+t1->property("qQuest").toString()+" = "+r1+" 填"+r2+"\r\n"); } } } } } TR->setText("正确:"+QString::number(rr)+",错误:"+QString::number(nr)+"\n正确率:"+ QString::number(rr*100.0/(rr+nr))+"%,用时:"+QString::number(StartTime.secsTo(EndTime))+"秒"); TR1->setText(QString::number(sumfen)); data.append("训练结果:"+TR->text().toUtf8()+"\r\n总分:"+TR1->text().toUtf8()+"\r\n"); if(sumfen>=80) TR1->setStyleSheet("QLabel { color: green; }"); else TR1->setStyleSheet("QLabel { color: red; }"); data.append("用时:"+QString::number(StartTime.secsTo(EndTime))+"秒"); QFile f(QDir::currentPath()+"/Result.txt"); f.open(QIODevice::Append); f.write(data.toUtf8()); f.close(); btnPing->setEnabled(false); btnsel->setEnabled(true); c1->setEnabled(true); c2->setEnabled(true); }); connect(TTT,&QTimer::timeout,[=](){ if(!btnsel->isEnabled()) { TR1->setText(QString::number(StartTime.secsTo(QDateTime::currentDateTime()))); } }); } W004::~W004() { }

三、第三个程序计算模块,这不传了。

四、main.cpp

#include "w004.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); W004 w; w.show(); return a.exec(); }

五、软件截图

1、

2、

3、

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/7 16:29:58

背景噪音影响识别?试试这几个降噪小妙招

背景噪音影响识别&#xff1f;试试这几个降噪小妙招 语音识别在实际应用中常常遇到一个头疼问题&#xff1a;背景噪音干扰导致识别准确率大幅下降。会议室里的空调声、街道上的车流声、办公室里的键盘敲击声&#xff0c;甚至自己说话时的回声&#xff0c;都可能让原本清晰的语…

作者头像 李华
网站建设 2026/2/7 4:11:24

MGeo vs 传统方法,谁更适合你的业务场景?

MGeo vs 传统方法&#xff0c;谁更适合你的业务场景&#xff1f; 在地址数据治理的实际工程中&#xff0c;你是否遇到过这些典型问题&#xff1a;用户注册时填“深圳南山区”&#xff0c;而数据库里存的是“深圳市南山区”&#xff1b;物流单上的“杭洲西湖区”被系统判定为无…

作者头像 李华
网站建设 2026/2/5 12:25:24

3376. 成绩排序2

3376.成绩排序2 ⭐️难度&#xff1a;简单 ⭐️类型&#xff1a;排序 &#x1f4d6;题目&#xff1a;题目链接 &#x1f31f;思路&#xff1a; 1、排序要参考2个元素&#xff0c;所以要自定义一个学生类型&#xff1b; 2、考察自定义排序规则&#xff1a; 找出 不交换 的情况…

作者头像 李华
网站建设 2026/2/5 22:25:21

Kafka 消息分区机制在大数据中的应用

Kafka 消息分区机制在大数据中的应用 关键词&#xff1a;Kafka、消息分区机制、大数据、数据处理、分布式系统 摘要&#xff1a;本文主要探讨了 Kafka 消息分区机制在大数据领域的应用。首先介绍了 Kafka 消息分区机制的相关背景知识&#xff0c;包括目的、适用读者、文档结构和…

作者头像 李华
网站建设 2026/2/7 8:24:20

webpack - 单独打包指定JS文件(因为不确定打出的前端包所访问的后端IP,需要对项目中IP配置文件单独拿出来,方便运维部署的时候对IP做修改)

介绍 因为不确定打出的前端包所访问的后端IP&#xff0c;需要对项目中IP配置文件单独拿出来&#xff0c;方便运维部署的时候对IP做修改。 因此&#xff0c;需要用webpack单独打包指定文件。 CommonsChunkPlugin module.exports {entry: {app: APP_FILE // 入口文件},outpu…

作者头像 李华
网站建设 2026/2/5 6:31:58

agent skills好像是把原本mcp的方法改成cli方法放在skill里

然后把mcp的python代码写在scripts/里 你的理解部分正确&#xff0c;但需要澄清一个关键点&#xff1a; Agent Skills 并不是“把 MCP 方法改成 CLI 方法”&#xff0c;而是提供了一种更轻量、更结构化的方式来封装任务逻辑——其中可以包含 CLI 调用、脚本执行、提示词模板等。…

作者头像 李华