文章的目的为了记录使用C++ 进行QT Widget 开发学习的经历。临时学习,完成app的开发。开发流程和要点有些记忆模糊,赶紧记录,防止忘记。

 相关链接:

开源 C++ QT Widget 开发(一)工程文件结构-CSDN博客

开源 C++ QT Widget 开发(二)基本控件应用-CSDN博客

 
推荐链接:

开源 java android app 开发(一)开发环境的搭建-CSDN博客

开源 java android app 开发(二)工程文件结构-CSDN博客

开源 java android app 开发(三)GUI界面布局和常用组件-CSDN博客

开源 java android app 开发(四)GUI界面重要组件-CSDN博客

开源 java android app 开发(五)文件和数据库存储-CSDN博客

开源 java android app 开发(六)多媒体使用-CSDN博客

开源 java android app 开发(七)通讯之Tcp和Http-CSDN博客

开源 java android app 开发(八)通讯之Mqtt和Ble-CSDN博客

开源 java android app 开发(九)后台之线程和服务-CSDN博客

开源 java android app 开发(十)广播机制-CSDN博客

开源 java android app 开发(十一)调试、发布-CSDN博客

开源 java android app 开发(十二)封库.aar-CSDN博客

推荐链接:

开源C# .net mvc 开发(一)WEB搭建_c#部署web程序-CSDN博客

开源 C# .net mvc 开发(二)网站快速搭建_c#网站开发-CSDN博客

开源 C# .net mvc 开发(三)WEB内外网访问(VS发布、IIS配置网站、花生壳外网穿刺访问)_c# mvc 域名下不可訪問內網,內網下可以訪問域名-CSDN博客

开源 C# .net mvc 开发(四)工程结构、页面提交以及显示_c#工程结构-CSDN博客

开源 C# .net mvc 开发(五)常用代码快速开发_c# mvc开发-CSDN博客

本章主要内容:演示使用了全局变量和过时的信号槽语法。实现了多种UI控件的交互功能,特别是定时器驱动的进度条更新功能。

1.基本介绍

2.源码分析

3.所有源码

4.演示效果

一、基本介绍

        Qt Widgets 是一个强大的框架,用于创建图形用户界面(GUI)应用程序。Qt Widgets 提供了一系列预定义的控件和布局管理器,使得开发者可以轻松地设计出美观且功能丰富的用户界面。这些控件包括按钮、文本框、滑块、列表、菜单等,几乎可以满足所有常见的GUI设计需求。

        QT是使用的5.14.2,安装程序很简单,不再详述。

工程功能分析
1. 定时器功能
自动启动:程序启动时定时器自动开始,每秒触发一次

进度条更新:每次定时器超时,进度条值增加1

问题:进度条会一直增加到255(uint8_t最大值)然后溢出

2. UI控件交互
pushButton:点击时计数器增加并在lineEdit中显示

radioButton:显示"选中/取消"状态

checkBox:同样显示"选中/取消"状态

comboBox:将选择项显示在lineEdit中

listWidget:点击项时在textEdit中显示内容

3. 界面组件推断
基于代码可以推断UI包含:

lineEdit:文本框,显示各种状态

textEdit:多行文本框,显示列表选择

progressBar:进度条,由定时器驱动

pushButton、radioButton、checkBox、comboBox、listWidget

二、源码分析

2.1  控制值得设置,使用ui  输入  ->  连接符  会出现 界面的控件,选择控件后,调用setText方法,就可以设置控件的显示值。

2.2  槽函数有多种连接形式

1)选中控件,右键选中 "转到槽"

mainwindow.h会自动生成槽函数

在on_pushButton_clicked()中,进行函数处理即可,其中pushButton为控件的名称,自动生成槽函数都是按这个规则 on +  控件名 + 动作

2)更新信号槽

 在mainwindow.h中先进行定时器信号槽的声明

把定时器的时间到的信号,与event_tmr函数连接

最后填入event_tmr槽函数的处理

三、所有源码

3.1  mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QListWidget>
#include <QMainWindow>namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();QTimer *myTmr;
private slots:void on_pushButton_clicked();void on_radioButton_clicked();void on_checkBox_clicked();void on_comboBox_activated(const QString &arg1);void on_btnTmrStart_clicked();void event_tmr();void on_listWidget_itemClicked(QListWidgetItem *item);private:Ui::MainWindow *ui;
};#endif // MAINWINDOW_H

3.2  mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <string.h>
#include "QTimer"
uint8_t ucCnt=0;
uint8_t ucCntTmr=0;
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);/*******定时器设置***************/myTmr =new QTimer(this);connect(myTmr, &QTimer::timeout, this, &MainWindow::event_tmr);myTmr->start(1000);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_pushButton_clicked()
{QString a;ucCnt++;a=QString::number(ucCnt);ui->lineEdit->setText(a);}void MainWindow::on_radioButton_clicked()
{bool BFlg = ui->radioButton->isChecked();if(BFlg ==true){ui->lineEdit->setText("选中");}else{ui->lineEdit->setText("取消");}
}void MainWindow::on_checkBox_clicked()
{bool BFlg = ui->checkBox->isChecked();if(BFlg ==true){ui->lineEdit->setText("选中");}else{ui->lineEdit->setText("取消");}
}void MainWindow::on_comboBox_activated(const QString &arg1)
{ui->lineEdit->setText(arg1);
}void MainWindow::on_btnTmrStart_clicked()
{}
void MainWindow::event_tmr()
{ucCntTmr++;if(ucCntTmr>90)ucCntTmr=0;ui->progressBar->setValue(ucCntTmr);
}void MainWindow::on_listWidget_itemClicked(QListWidgetItem *item)
{if (item) {QString text = item->text();// 方法2:在lineEdit中显示ui->textEdit->setText("选中: " + text);// 方法3:显示消息框(可选)// QMessageBox::information(this, "选中项", "您选择了: " + text);}
}

四、显示效果

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

今日科技风向|从AI芯片定制到阅兵高科技展示——聚焦技术前沿洞察

今日科技风向&#xff5c;从AI芯片定制到阅兵高科技展示——聚焦技术前沿洞察 一、NVIDIA 开发“黑曜”子版 AI 芯片 B30A&#xff0c;瞄准中国市场 今日报道指出&#xff0c;NVIDIA 正在研发一款面向中国市场的定制芯片 B30A&#xff0c;基于其先进的 Blackwell 架构&#xff…

Elasticsearch官方文档学习-未完待续

Elasticsearch官方文档学习-未完待续说明快速开始基础知识索引组成1. 文档 (Documents)2. 元数据字段(Metadata fields)3. 映射和数据类型(Mappings and data types)文档操作(Document)批量创建或者删除文档 (Bulk index or delete documents)乐观并发控制 Optimistic concurre…

Redis资料

Redis是什么&#xff1f; Redis(Remote Dictionary Server)是一个开源的、基于内存的键值数据库&#xff0c;支持多种数据结构&#xff0c;可用作数据库、缓存和消息中间件。主要特点包括&#xff1a; 基于内存操作&#xff0c;读写性能极高支持持久化&#xff0c;可将内存数…

CAMEL-Task2-Agent的构成组件

CAMEL-Task2-Agent的构成组件 本文笔记主要关于2.7章节&#xff1a;CAMEL框架中agents如何使用工具。 一、工具说明 为什么要额外使用工具&#xff1f; agents本身的知识和能力有限&#xff0c;比如一些问题需要联网搜索才能准确回答&#xff08;而不是乱答&#xff0c;即“…

数据整理自动化 - 让AI成为你的数据助手

文章目录数据整理自动化 - 让AI成为你的数据助手引言&#xff1a;数据整理的时代挑战与机遇1. 常见数据整理场景分析1.1 数据整理的多元场景图谱1.2 数据质量问题的分类与影响1.3 传统处理方法的局限性2. AI与传统脚本的协同工作流2.1 智能数据整理架构设计2.2 协同工作流的最佳…

react速成

项目目录package.json文件&#xff1a;包含核心两个依赖&#xff08;react、react-dom&#xff09;和命令&#xff08;start、bulid&#xff09;src&#xff1a;源码目录&#xff0c;开始之用的到index.js和App.jsindex.js&#xff1a;是项目的入口&#xff0c;一切的运行起点/…

Maven的进阶使用(上)

pom.xml文件 就像 Make 的 MakeFile、Ant 的 build.xml 一样&#xff0c;Maven 项目的核心是 pom.xml。POM(全称 Project Object Model&#xff0c;项目对象模型 ) 定义了项目的基本信息&#xff0c;用于描述项目如何构建&#xff0c;声明项目依赖&#xff0c;等等。 Gredele--…

【最后203篇系列】034 使用SQLite构建简单的任务管理

表数据同步的断点续传 有时候需要将一个表的数据复制到另一个表&#xff0c;循环是常用的方式。当表比较大&#xff0c;执行的时间很长&#xff0c;会有很多因素引起失败。我希望可以比较简单的跑数&#xff0c;所以做一个简单的任务系统。 SQLitre是嵌入式数据库&#xff0c;这…

SpringCloud Alibaba核心知识点

Spring Cloud Alibaba 是阿里巴巴开源的一套微服务解决方案&#xff0c;与 Spring Cloud 生态深度集成。以下是其主要组件及其功能&#xff1a;Nacos服务注册与发现&#xff1a;支持动态服务注册、健康监测及DNS-Based服务发现。配置中心&#xff1a;提供分布式配置管理&#x…

LeetCode 分类刷题:34. 在排序数组中查找元素的第一个和最后一个位置

题目给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target&#xff0c;返回 [-1, -1]。你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。示例 1&#xff1a;…

自建知识库,向量数据库 (十二)之 文章向量搜索——仙盟创梦IDE

“未来之窗” 文章向量搜索&#xff1a;多领域应用与学习指南 在数字化浪潮中&#xff0c;“未来之窗” 文章向量搜索凭借其独特的技术优势&#xff0c;在酒店、电商、诊疗及知识库等多个领域展现出巨大的应用潜力&#xff0c;为各行业的信息处理与检索带来了全新的视角和高效…

深度剖析:基于反射的.NET二进制序列化器设计与实现

&#x1f50d; 深度剖析&#xff1a;基于反射的.NET二进制序列化器设计与实现本文将从底层原理到高级优化&#xff0c;全面剖析一个基于反射的.NET二进制序列化器的设计与实现&#xff0c;涵盖类型系统处理、内存布局、递归算法、性能优化等核心主题。1. 设计哲学与架构总览 1.…

如何在 Ubuntu 上安装和配置 Samba ?

Samba 是一个开源程序&#xff0c;用于文件共享和网络打印&#xff0c;使用 SMB 协议。现在基本上用于提供在 Windows 上可访问的 Linux 文件共享系统。 本文介绍如何在 Ubuntu 上安装和配置 Samba 服务器&#xff0c;以便跨文件夹共享网络上不同的计算机。 Update Your Syst…

MATLAB实现CNN-GRU-Attention时序和空间特征结合-融合注意力机制混合神经网络模型的风速预测

该 MATLAB 代码实现了一个基于 CNN-GRU-Attention 时序和空间特征结合-融合注意力机制混合神经网络模型的风速预测。以下是对代码的简要分析&#xff1a;一、主要功能 该代码用于风速时间序列预测&#xff0c;使用历史风速特征数据&#xff08;18个特征&#xff0c;75天&#x…

【升级版】从零到一训练一个 0.6B 的 MoE 大语言模型

前文&#xff1a;从零到一训练一个 0.6B 的 MoE 大语言模型&#xff0c;本次升级完全重新从零开始重新训练。主要升级如下&#xff1a; 替换预训练数据集&#xff0c;使用序列猴子通用文本数据集进行预训练。使用更先进的训练方法。新增思考模式控制&#xff0c;可通过添加/th…

51单片机-实现定时器模块教程

本章概述思维导图&#xff1a; 51单片机驱动定时器模块 CPU时序简介 CPU时序定义了CPU内部操作的时间节奏&#xff0c;以下从四个时序周期进行逐步解析&#xff1b; 1、振荡周期 振荡周期&#xff1a;CPU内部时钟源产生的最小时间单位&#xff0c;由晶振或内部振荡器决定&am…

7.Kotlin的日期类

以下是 Kotlin 中常用时间类&#xff08;基于 java.time 包&#xff09;的核心方法及使用示例&#xff0c;参考数组方法的表格形式&#xff0c;按类分类展示&#xff1a; 一、LocalDate&#xff08;日期&#xff1a;年/月/日&#xff09;方法签名返回值说明示例now(): LocalDat…

【Big Data】Hive技术解析:大数据仓库的SQL桥梁

Hive作为Apache顶级项目&#xff0c;是Hadoop生态系统中最具影响力的SQL查询引擎&#xff0c;它解决了大数据处理与传统SQL技能之间的鸿沟。Hive的核心价值在于将类SQL查询语言HiveQL无缝转换为分布式计算框架MapReduce的任务&#xff0c;使数据分析师能够利用熟悉的SQL语法操作…

Ubuntu2204server系统安装postgresql14并配置密码远程连接

前言&#xff1a; 最近因项目需要安装postgresql14&#xff0c;系统是ubuntu2204server系统&#xff0c;安装好后发现无法实现远程连接&#xff0c;解决了之后在此记录一下解决方法。 疑问&#xff1a; 什么情况下需要配置postgresql远程连接&#xff1f; ①如果是postgresql和…

【嵌入式】【搜集】状态机、状态迁移图及状态模式材料

文章目录状态机状态机状态机定义与核心特点状态机总结状态迁移图状态迁移图状态迁移图核心概念与要素状态迁移图常见错误与规避状态迁移图总结状态模式状态模式状态模式核心概念与组成状态模式核心价值与适用场景状态模式优缺点分析进阶优化技巧行为模式总结状态机 状态机 状…