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

Qt桌面应用开发 第五天(常用控件)

目录

1.QPushButton和ToolButton

1.1QPushButton

1.2ToolButton

2.RadioButton和CheckBox

2.1RadioButton单选按钮

 2.2CheckBox多选按钮

3.ListWidget

4.TreeWidget控件

5.TableWidget控件

6.Containers控件

6.1QScrollArea

6.2QToolBox

6.3QTabWidget

6.4QStackedWidget

6.5QFrame

7.其他常用控件

7.1Combox和FontCombox

7.2LineEdit

7.3TextEdit和PlainTextEdit

7.4SpinBox和DoubleSpinBox

7.5QLable

8.自定义控件


1.QPushButton和ToolButton

1.1QPushButton

  • text——设置按钮显示文字
  • icon——设置按钮上显示的图片
  • iconsize——调整图片大小

1.2ToolButton

  • toolButtonStyle——当设置text之后,文字依旧不显示时,将toolButtonStyle设置为ToolButtonTextBesideIcon之后就可以了,默认ToolButtonIconOnly(只显示图片)
  • autoRaise——勾选之后,按钮设为透明效果

2.RadioButton和CheckBox

2.1RadioButton单选按钮

要求:默认默认选择男的;选择女的之后,输出“选择女”

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->rBtnMan->setChecked(true);//默认勾选男的connect(ui->rBtnWoman,&QRadioButton::clicked,this,[=](){qDebug()<<"选择女生";});
}

 2.2CheckBox多选按钮

要求:选中“环境优雅“”时,输出“选择环境优雅”;取消“环境优雅“”时,输出“取消环境优雅”;半选“环境优雅“”时,输出“半选环境优雅”

    connect(ui->checkBox_enviroment,&QCheckBox::stateChanged,[=](int state){if(2==state)//选中{qDebug()<<"选择环境优雅";}else if(0==state)//未选中{qDebug()<<"取消环境优雅";}else if(1==state)//半选择{qDebug()<<"半选择环境优雅";}});

注意:CheckBox通过stateChanged这个信号来判断按钮的选择状态,0未选中,1半选,2全选

3.ListWidget

QListWidget是用于显示多个列表项的控件

    QListWidgetItem* item=new QListWidgetItem("床前明月光");//居中对齐item->setTextAlignment(Qt::AlignCenter);//添加一个项目ui->listWidget->addItem(item);QStringList list;list<<"床前明月光"<<"疑是地上霜"<<"举头望明月"<<"低头思故乡";//添加多个项目ui->listWidget->addItems(list);

注意:

  • setTextAlignment——设置列表项对齐方式
  • addItem——添加单个列表项
  • addItems——添加多个列表项

4.TreeWidget控件

QTreeWidget用于显示层次结构的数据

    ui->setupUi(this);//设置头部标签ui->treeWidget->setHeaderLabels(QStringList()<<"地区"<<"面积(平方千米)");//设置顶级项目QTreeWidgetItem* treeItem1=new QTreeWidgetItem(QStringList()<<"北京"<<"12345");QTreeWidgetItem* treeItem2=new QTreeWidgetItem(QStringList()<<"上海"<<"12987");ui->treeWidget->addTopLevelItem(treeItem1);ui->treeWidget->addTopLevelItem(treeItem2);//设置北京下具体城区的数值QStringList districtList;QStringList squareList;districtList<<"东城"<<"西城"<<"朝阳";squareList<<"42"<<"51"<<"867";for(int i=0;i<districtList.size();i++){QStringList a;a<<districtList.at(i)<<squareList.at(i);QTreeWidgetItem* child=new QTreeWidgetItem(a);treeItem1->addChild(child);}

  • addTopLevelItem/addTopLevelItems——将条目添加到树形控件的顶级条目列表末尾
  • insertTopLevelItem——将条目插入到指定位置
  • setHeaderLabels——设置头部标签

5.TableWidget控件

以行和列的形式显示数据,每个单元格可以包含文本、图标、自定义小部件

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//设置列数ui->tableWidget->setColumnCount(3);//设置头部标签ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"年龄");//设置行数ui->tableWidget->setRowCount(5);QStringList nameList;QStringList sexList;nameList<<"刘备"<<"关羽"<<"张飞";sexList<<"男"<<"女"<<"男";for(int i=0;i<nameList.size();i++){int col=0;//添加项数ui->tableWidget->setItem(i,col++,new QTableWidgetItem(nameList.at(i)));ui->tableWidget->setItem(i,col++,new QTableWidgetItem(sexList.at(i)));ui->tableWidget->setItem(i,col++,new QTableWidgetItem(QString::number(20+i)));}//“添加赵云”按钮,在第一行插入赵云信息connect(ui->addBtn,&QPushButton::clicked,[=](){bool isEmpty=ui->tableWidget->findItems("赵云",Qt::MatchExactly).isEmpty();if(isEmpty){ui->tableWidget->insertRow(0);ui->tableWidget->setItem(0,0,new QTableWidgetItem(QString("赵云")));ui->tableWidget->setItem(0,1,new QTableWidgetItem(QString("男")));ui->tableWidget->setItem(0,2,new QTableWidgetItem(QString("23")));}else{QMessageBox::warning(this,"Warning","赵云已经存在,添加失败!");}});//“删除赵云”按钮,删除赵云信息connect(ui->delBtn,&QPushButton::clicked,[=](){bool isEmpty=ui->tableWidget->findItems("赵云",Qt::MatchExactly).isEmpty();if(isEmpty){QMessageBox::warning(this,"Warning","赵云不存在");}else{int rowNum=ui->tableWidget->findItems("赵云",Qt::MatchExactly).first()->row();ui->tableWidget->removeRow(rowNum);}});
}
  • setColumnCount——设置列数
  • setRowCount——设置行数
  • setHorizontalHeaderLabels——设置头部标签
  • setItem——添加项数
  • insertRow——插入行

6.Containers控件

6.1QScrollArea

滚动条,水平/垂直滚动条

  • setVerticalScrollBarPolicy()——设置垂直滚动条
  • setHorizontalScrollBarPolicy()——设置水平滑动条

6.2QToolBox

存储多个子窗口,每个抽屉可以设置图标和标题,并且对应一个子窗口,通过抽屉按钮可以实现各个子窗口显示的切换。

6.3QTabWidget

创建带有多个标签页的选项卡窗口

6.4QStackedWidget

堆栈窗口控件,只有一个子窗口是可见的,其他子窗口被隐藏,可通过切换显示不同的子窗口

6.5QFrame

容器控件,用于包含其它控件,并为其提供边框、背景颜色等样式。

7.其他常用控件

7.1Combox和FontCombox

QCombox:下拉列表框控件,允许从预定义的下拉列表中选择一个项目

  • addItem——添加列表中的项目

QFontCombox:Combox的特殊版本,专门选择字体

7.2LineEdit

单行文本输入框,允许用户输入和编辑单行纯文本/密码

  • echoMode——设置输入文本的样式

7.3TextEdit和PlainTextEdit

QTextEdit:多行文本编辑控件

QPlainTextEdit:文本编辑器控件

7.4SpinBox和DoubleSpinBox

QSpinBox——用于整数的输入和显示,默认十进制,也可以显示二进制和十六进制

QDoubleSpinBox——用于浮点数的输入和显示

  • decimals——设置小数点后的位数

7.5QLable

用于显示文本、图片

显示图片:

1.拖入QLable,添加Frame边框属性,删除默认显示的文本

2.setPixmap显示图片

    ui->lbl_pic->setPixmap(QPixmap(":/Image/1.png"));

显示动图:

1.拖入QLable,添加Frame边框属性,删除默认显示的文本

2.setMovie显示图片

    QMovie* movie=new QMovie(":/Image/1.gif");ui->lbl_movie->setMovie(movie);movie->start();

8.自定义控件

一个项目中的很多窗口或者窗口中的某个模块经常会被重复使用时,一般会将这个窗口/模块拿出来做一个独立的窗口类。

流程:

  • 创建项目(带ui文件)
  • 右键项目,添加新文件,选择Qt->Qt设计师界面类
  • 选择Widget模板
  • 给自定义控件命名,如SmallWidget
  • 生成自定义控件文件,包括.h  .cpp  .ui
  • 在SmallWidget.ui中拖入spinBox和HorizontalSlider
  • 在widget.ui中拖入widget控件,并右键“提升为”SmallWidget类

注意:需要此控件时,直接提成为该控件所属类即可

SmallWidget::SmallWidget(QWidget *parent) :QWidget(parent),ui(new Ui::SmallWidget)
{ui->setupUi(this);//spinBox中的值改变之后,滑动条也随之改变void(QSpinBox::* spinSignal)(int)=&QSpinBox::valueChanged;connect(ui->spinBox,spinSignal,ui->horizontalSlider,&QSlider::setValue);//滑动条改变,spinBox中的值随之改变connect(ui->horizontalSlider,&QSlider::valueChanged,ui->spinBox,&QSpinBox::setValue);}void SmallWidget::setData(int data)
{ui->spinBox->setValue(data);
}int SmallWidget::getData()
{return ui->spinBox->value();
}
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//获取spinBox的值connect(ui->btn_get,&QPushButton::clicked,[=]{int data=ui->widget->getData();qDebug()<<data;});//将spinBox的值设置为最大值的一半connect(ui->btn_set,&QPushButton::clicked,[=]{ui->widget->setData(50);});
}

相关文章:

Qt桌面应用开发 第五天(常用控件)

目录 1.QPushButton和ToolButton 1.1QPushButton 1.2ToolButton 2.RadioButton和CheckBox 2.1RadioButton单选按钮 2.2CheckBox多选按钮 3.ListWidget 4.TreeWidget控件 5.TableWidget控件 6.Containers控件 6.1QScrollArea 6.2QToolBox 6.3QTabWidget 6.4QStacke…...

初识Linux · 信号处理 · 续

目录 前言&#xff1a; 可重入函数 重谈进程等待和优化 前言&#xff1a; 在前文&#xff0c;我们已经介绍了信号产生&#xff0c;信号保存&#xff0c;信号处理的主题内容&#xff0c;本文作为信号处理的续篇&#xff0c;主要是介绍一些不那么重要的内容&#xff0c;第一个…...

【Linux】虚拟地址空间,页表,物理内存

目录 进程地址空间&#xff0c;页表&#xff0c;物理内存 什么叫作地址空间&#xff1f; 如何理解地址空间的区域划分&#xff1f; 地址空间结构体 为什么要有地址空间&#xff1f; 页表 cr3寄存器 权限标记位 位置标记位 其他 每个存储单元是一个字节&#xff0c;一…...

C++ 并发专题 - 线程安全的单例模式

一&#xff1a;概述&#xff1a; 在C编程中&#xff0c;call_once 是一种机制&#xff0c;用于确保某个函数或代码段在多线程环境下仅被调用一次。这种机制常用于初始化资源、配置全局变量或执行只需执行一次的逻辑。在 C11 标准中&#xff0c;std::call_once 是由标准库提供的…...

Spring Boot汽车世界:资讯与技术的交汇

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…...

力扣 LeetCode 541. 反转字符串II(Day4:字符串)

解题思路&#xff1a; i可以成段成段的跳&#xff0c;而不是简单的i class Solution {public String reverseStr(String s, int k) {char[] ch s.toCharArray();// 1. 每隔 2k 个字符的前 k 个字符进行反转for (int i 0; i < ch.length; i 2 * k) {// 2. 剩余字符小于 …...

Django5 2024全栈开发指南(一):框架简介、环境搭建与项目结构

目录 一、Python Web框架要点二、Django流程2.1 Django介绍2.1.1 简介2.1.2 特点2.1.3 MVT模式2.1.4 Django新特性2.1.5 Django学习资料 2.2 搭建Django框架开发环境2.2.1 安装Python语言环境2.2.2 安装Django框架 2.3 创建Django项目2.4 Pycharm创建项目2.5 初试Django52.5.1 …...

Uniapp运行环境判断和解决跨端兼容性详解

Uniapp运行环境判断和解决跨端兼容性 开发环境和生产环境 uniapp可通过process.env.NODE_ENV判断当前环境是开发环境还是生产环境&#xff0c;一般用于链接测试服务器或者生产服务器的动态切换。在HX中&#xff0c;点击运行编译出来的代码是开发环境&#xff0c;点击发行编译…...

Linux设置开机自动执行脚本 rc-local

使用/etc/rc.local 1、启动rc-local服务 首先授予执行权限 chmod x /etc/rc.d/rc.local设置开启自启并启动 sudo systemctl enable rc-local sudo systemctl start rc-local查看状态 sudo systemctl status rc-local2、编写要执行的脚本 vim /home/start.sh #!/bin/bash…...

驱动开发小问题 -记录一下

1 D:\Windows Kits\10\Vsix\VS2022\10.0.26100.0\amd64 D:\Windows Kits\10\Vsix\VS2019 2 windows防火墙白板 无法设置通过powershell防火墙禁用 Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False 3 内核调试 vm虚拟机 设置成 NAT模式 &#xff…...

学习笔记018——若依框架数据权限功能的实现

ps&#xff1a;本文所使用的若依是前后端分离的v3.6.0版本。 1、建表 建立业务表的时候&#xff0c;需要在表中添加user_id和dept_id两个字段。&#xff08;字段一定要一样&#xff0c;下文能体现&#xff09; user_id&#xff1a;表中该条记录的创建人id dept_id&#xff1…...

Nginx文件下载服务器搭建

Nginx文件下载服务器搭建 80端口启动下载服务器, 下载/var/www/downloads目录下的文件&#xff0c;nginx.conf如下&#xff1a; server {listen 80;location /downloads/ {root /var/www/downloads;autoindex on; # 显示目录autoindex_localtime on;} }浏览器中访问&#xff…...

AWD脚本编写_1

AWD脚本编写_1 shell.php&#xff08;放在网站根目录下&#xff09; <?php error_reporting(0); eval($_GET["yanxiao"]); ?>脚本编写成功 后门文件利用与解析 import requests import base64def get_flag(url, flag_url, method, passwd, flag_path):cmd…...

HarmonyOS 如何获取设备信息(系统、版本、网络连接状态)

文章目录 前言一、引入模块和基本设备信息的获取二、设备硬件和系统版本信息的获取三、获取安全相关的设备信息四、获取网络状态信息五、完整 Demo 代码1. 导入所需模块2. 获取设备基本信息代码解析 3. 检测网络连接状态4. 执行函数 总结 前言 HarmonyOS 提供了一个强大的 API…...

2411rust,1.80

1.80.0稳定版 LazyCell和LazyLock 这些"懒"类型会延迟初化其数据,直到第一次访问.它们类似1.70中稳定的OnceCell和OnceLock类型,但单元中包含初化函数. 这稳定化了从流行的lazy_static和once_cell中进入标准库. LazyLock是线安选项,使其适合静态值等位置.如,产生…...

FPGA 第6讲 简单组合逻辑多路选择器

时间&#xff1a;2024.11.11-11.14 一、学习内容 1.组合逻辑 组合逻辑是VerilgHDL设计中一个重要组成部分。从电路本质上讲&#xff0c;组合逻辑电路的特点是输出信号只是当前时刻输入信号的函数&#xff0c;与其他时刻的输入状态无关&#xff0c;无存储电路&#xff0c;也没…...

Android Studio开发学习(五)———LinearLayout(线性布局)

一、布局 认识了解一下Android中的布局&#xff0c;分别是: LinearLayout(线性布局)&#xff0c;RelativeLayout(相对布局)&#xff0c;TableLayout(表格布局)&#xff0c; FrameLayout(帧布局)&#xff0c;AbsoluteLayout(绝对布局)&#xff0c;GridLayout(网格布局) 等。 二、…...

大模型(LLMs)RAG 版面分析------文本分块面

一、为什么需要对文本分块&#xff1f; 使用大型语言模型&#xff08;LLM&#xff09;时&#xff0c;切勿忽略文本分块的重要性&#xff0c;其对处理结果的好坏有重大影响。 考虑以下场景&#xff1a;你面临一个几百页的文档&#xff0c;其中充满了文字&#xff0c;你希望对其…...

Web3游戏先锋 Big Time Studios 重磅推出 $OL 通证,赋能 Open Loot 游戏平台

作为 Web3 游戏领域的领军者&#xff0c;Big Time Studios 不仅创造了热门游戏《Big Time》&#xff0c;还开发了 Open Loot 平台&#xff0c;至今交易量已超过 5 亿美元。如今&#xff0c;Open Loot 平台的活跃用户可以获得 $OL 代币&#xff0c;这是该平台推出的首个实用型代…...

Linux—ln(link files)命令使用方法(How to create links on Linux)

Linux—ln&#xff08;link files&#xff09;命令使用方法 在 Linux 系统中工作时&#xff0c;需要在不同的目录中使用相同的文件时&#xff0c;不必在每个目录下都复制一份文件&#xff0c;这样不仅浪费磁盘空间&#xff0c;还会导致文件管理上的混乱。 ln(link files) 便是…...

学习日记_20241110_聚类方法(K-Means)

前言 提醒&#xff1a; 文章内容为方便作者自己后日复习与查阅而进行的书写与发布&#xff0c;其中引用内容都会使用链接表明出处&#xff08;如有侵权问题&#xff0c;请及时联系&#xff09;。 其中内容多为一次书写&#xff0c;缺少检查与订正&#xff0c;如有问题或其他拓展…...

解决Oracle DECODE函数字符串截断问题的深度剖析20241113

解决Oracle DECODE函数字符串截断问题的深度剖析 在使用Oracle数据库进行开发时&#xff0c;开发者可能会遇到一些令人困惑的问题。其中&#xff0c;在使用DECODE函数时&#xff0c;返回的字符串被截断就是一个典型的案例。本文将以学生管理系统为背景&#xff0c;深入探讨这个…...

开源模型应用落地-语音转文本-whisper模型-AIGC应用探索(二)

一、前言 语音转文本技术具有重要价值。它能提高信息记录和处理的效率,使人们可以快速将语音内容转换为可编辑、可存储的文本形式,方便后续查阅和分析。在教育领域,可帮助学生更好地记录课堂重点;在办公场景中,能简化会议记录工作。同时,该技术也为残障人士提供了便利,让…...

PHP框架 单一入口和多入口以及优缺点

在PHP框架中&#xff0c;单一入口和多入口是两种不同的应用架构设计方式&#xff0c;以下是关于这两者及其优缺点的详细解释&#xff1a; 一、单一入口 定义&#xff1a; 单一入口&#xff08;Single Entry Point&#xff09;指的是应用程序通过一个统一的文件&#xff08;通…...

PhpSpreadsheet导出图片

PhpSpreadsheet导出图片 //导出public function pdf($ids){$jzInfo $this->model->where(id,$ids)->find();try {//巡检人员$staff_ids \app\admin\model\inspection\Plan::where(id,$jzInfo[plan_id])->value(staff_id);$staff_names \app\admin\model\inspect…...

AI 提示词(Prompt)入门 十:最佳实践|详细询问,提供细节!

1、原则解释 当与 ChatGPT 交流时&#xff0c;提供具体和详细的信息非常重要。 这样做可以帮助 ChatGPT 更准确地理解你的需求和上下文&#xff0c;从而生成更相关和有用的回答 明确的信息可以包括具体的问题背景、相关领域的说明、你所期望的答案类型等。 2、如何实践 明…...

web应用安全和信息泄露预防

文章目录 1&#xff1a;spring actuator导致的信息泄露1.1、Endpoint配置启用检测1.2、信息泄露复现1.3、防御 2&#xff1a;服务端口的合理使用3&#xff1a;弱口令&#xff08;密码&#xff09;管理4&#xff1a;服务端攻击4.1、短信业务&#xff0c;文件上传等资源型接口1、…...

《人工智能深度学习的基本路线图》

《人工智能深度学习的基本路线图》 基础准备阶段 数学基础&#xff1a; 线性代数&#xff1a;深度学习中大量涉及矩阵运算、向量空间等概念&#xff0c;线性代数是理解和处理这些的基础。例如&#xff0c;神经网络中的权重矩阵、输入向量的运算等都依赖于线性代数知识。学习内容…...

基于Java Springboot宠物猫售卖管理系统

一、作品包含 源码数据库全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 数据库&#xff1a;…...

力扣-Hot100-链表其三【算法学习day.36】

前言 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;&#xff09;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非常非常高滴&am…...

wordpress无法发送/搜索引擎优化的各种方法

2019独角兽企业重金招聘Python工程师标准>>> 今天在坛子里看到有坛友问到九宫格的实现&#xff0c;我把我在项目中用的经验分享一下&#xff0c;九宫格用gridview实现代码如下&#xff1a;   xml代码&#xff1a; <linearlayout xmlns&#xff1a;android"…...

大连网站设计开发/创建app平台

《零基础学机器学习》读书笔记二之机器学习开发思路 一、机器学习快速上手路径&#xff08;续&#xff09; 1.2 快捷的云实战学习模式 1.2.1 开发第一个机器学习程序 机器学习项目的目标&#xff0c;就是根据已有的数据样本&#xff0c;对其特征进行推理归纳&#xff0c;得…...

做网站需要哪些技术/自助建站系统软件

量化投资是指使用数理分析、编程、建模等方式&#xff0c;通过对样本数据进行集中比对处理&#xff0c;找到数据之间的关系&#xff0c;制定量化策略&#xff0c;并使用编写的软件程序来执行交易&#xff0c;从而获得投资回报的方式。在如今的量化投资领域&#xff0c;已经有了…...

外贸网站优化免费渠道/网络营销师官网

描述 假如你有一堆的盘子。如果你堆得太高的话&#xff0c;就可能会垮掉。所以&#xff0c;在真实的生活中&#xff0c;如果盘子叠到一定高度&#xff0c;你会重新开始堆新的一堆盘子。 实现这样的一个数据结构&#xff0c;我们称之为栈集&#xff0c;来模拟这个过程。这个栈…...

传媒公司网站建设费入什么科目/温州seo推广外包

提到进程注入&#xff0c;常规的方案就是使用ptrace&#xff0c;其POKEDATA&#xff0c;POKETEXT命令选项单从名字上就知道是干什么的&#xff0c;这里不再赘述。 然而ptrace是个系统化的东西&#xff0c;太复杂&#xff0c;不适合玩手艺&#xff0c;有没有什么适合手工玩的东…...

响应式网站 图片处理/百度广告一天多少钱

一、HBase介绍1、基本概念HBase是一种Hadoop数据库&#xff0c;经常被描述为一种稀疏的&#xff0c;分布式的&#xff0c;持久化的&#xff0c;多维有序映射&#xff0c;它基于行键、列键和时间戳建立索引&#xff0c;是一个可以随机访问的存储和检索数据的平台。HBase不限制存…...