当前位置: 首页 > news >正文

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

文章的目的为了记录使用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博客

这是一个功能基本完整的Qt应用程序,主要问题在于使用了全局变量和过时的信号槽语法。代码结构清晰,实现了多种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.dtcms.com/a/338879.html

相关文章:

  • leetcode_ 76 最小覆盖子串
  • 决策树(续)
  • 大数据技术栈 —— Redis与Kafka
  • 字符串与算法题详解:最长回文子串、IP 地址转换、字符串排序、蛇形矩阵与字符串加密
  • 磨砂玻璃登录页面使用教程 v0.1.1
  • 【Linux仓库】进程创建与进程终止【进程·柒】
  • 通过C#上位机串口写入和读取浮点数到stm32的片内flash实战4(通过串口下发AD9833设置值并在上位机显示波形曲线)
  • 基于单片机智能点滴输液系统
  • 元素的width和offsetWidth有什么区别
  • java八股文-中间件-参考回答
  • Win11家庭版docker安装MaxKB
  • 【论文阅读】DETR3D: 3D Object Detection from Multi-view Images via 3D-to-2D Queries
  • 边缘智能体:Go编译在医疗IoT设备端运行轻量AI模型(中)
  • 【HTML】3D动态凯旋门
  • 【SpringBoot】15 核心功能 - Web开发原理 - 请求处理 - 常用请求参数注解
  • 【SpringBoot】Dubbo、Zookeeper
  • 【完整源码+数据集+部署教程】鳄梨表面缺陷检测图像分割系统源码和数据集:改进yolo11-MLCA
  • C语言第九章字符函数和字符串函数
  • Go语言快速入门指南(面向Java工程师)
  • 基于SpringBoot+Vue的养老院管理系统的设计与实现 智能养老系统 养老架构管理 养老小程序
  • 外网-内网渗透测试(文件上传漏洞利用)
  • MySQL事务篇-事务概念、并发事务问题、隔离级别
  • 链表基本运算详解:查找、插入、删除及特殊链表
  • 线段树结合矩阵乘法优化动态规划
  • 如何让你的知识分享更有说服力?
  • 云计算核心技术之云存储技术
  • 【React】简单介绍及开发环境搭建
  • JVM 面试精选 20 题(续)
  • react-quill-new富文本编辑器工具栏上传、粘贴截图、拖拽图片将base64改上传服务器再显示
  • 叉车结构设计cad+三维图+设计说明书