【Qt】常见控件

文章目录

  • 按钮组
  • QListWidget列表容器
  • TreeWidget树控件
  • TableWidget 表格控件
  • 其它控件介绍
    • 下拉框
    • QLabel显示图片和动图
  • 自定义控件封装

按钮组

QPushButton 常用按钮

QToolButton 工具按钮: 用于显示图片

  • 如果想显示文字:修改风格:toolButtonStyle =>选择TextBesideIcon
  • 凸起风格:autoRaise选中即可

radioButton 单选按钮 => 多个按钮通常配合Group Box组件一起使用

  • 设置默认选中的值:ui->按钮名字->setChecked(true);
//设置单选按钮 男默认选中
ui->rBtnMan->setChecked(true);//选中女后 打印信息
connect(ui->rBtnWoman,&QRadioButton::clicked,[=](){qDebug() << "选中了女了!";
});

image-20231005094944405


checkbox:多选按钮,监听状态。2表示选中 1表示半选 0表示未选中,通常配合group box使用

开启半选状态

image-20231005095208104

点一下:半选 再点一下:选中


//多选按钮  2是选中  0是未选中 1是半选 
connect(ui->cBox,&QCheckBox::stateChanged,[=](int state){qDebug() << state;
});

stateChanged有一个int参数,所以需要在lambda当中接收


QListWidget列表容器

QListWidgetItem * item = new QListWidgetItem("锄禾日当午");
//将一行诗放入到listWidget控件中
ui->listWidget->addItem(item);
item->setTextAlignment(Qt::AlignHCenter); //设置水平居中

image-20231005100626640


方式2

QStringList list ; 
list << "锄禾日当午" << "旱地和下土" << "谁知盘中餐"<< "粒粒皆辛苦";
ui->listWidget->addItems(list);

image-20231005100729302


TreeWidget树控件

1.设置头 2.创建根节点 3.添加根节点到树控件上 4.添加子节点

//设置水平方向的头
ui->treeWidget->setHeaderLabels(QStringList()<< "英雄"<< "英雄介绍");//QStringList()里面QString对象,里面重载了<<QTreeWidgetItem * liItem = new QTreeWidgetItem(QStringList()<< "力量");
QTreeWidgetItem * minItem = new QTreeWidgetItem(QStringList()<< "敏捷");
QTreeWidgetItem * zhiItem = new QTreeWidgetItem(QStringList()<< "智力");//加载顶层的节点
ui->treeWidget->addTopLevelItem(liItem);
ui->treeWidget->addTopLevelItem(minItem);
ui->treeWidget->addTopLevelItem(zhiItem);//追加子节点
QStringList heroL1;
heroL1 << "刚被猪" << "前排坦克,能在吸收伤害的同时造成可观的范围输出";
QTreeWidgetItem * l1 = new QTreeWidgetItem(heroL1);
liItem->addChild(l1);

image-20231005100930936


TableWidget 表格控件

设置列数=>设置水平表头=>设置行数=>设置正文

//设置列数
ui->tableWidget->setColumnCount(3);//设置水平方向表头
ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<< "性别"<< "年龄");//设置行数
ui->tableWidget->setRowCount(5);//设置正文
//ui->tableWidget->setItem(0,0, new QTableWidgetItem("亚瑟")); //行数 列数 QTableWidgetItem对象地址
QStringList nameList;
nameList<< "亚瑟"<< "赵云"<< "张飞"<< "关羽" << "花木兰";QList<QString> sexList;
sexList << "男"<< "男"<< "男"<< "男"<< "女";for(int i = 0 ; i < 5 ;i ++)	
{int col = 0;ui->tableWidget->setItem(i,col++, new QTableWidgetItem(nameList[i]));ui->tableWidget->setItem(i,col++, new QTableWidgetItem(sexList.at(i)));//int 转 QString  : QString::numberui->tableWidget->setItem(i,col++, new QTableWidgetItem( QString::number(i+18)));
}

image-20231005101146687


其它控件介绍

下拉框

image-20231005101702218

ui->comboBox->addItem("奔驰"); //0
ui->comboBox->addItem("宝马");//1
ui->comboBox->addItem("拖拉机");//2//点击按钮 选中拖拉机选项
connect(ui->btn_select,&QPushButton::clicked,[=](){//ui->comboBox->setCurrentIndex(2); //拖拉机是2号ui->comboBox->setCurrentText("拖拉机");
});

image-20231005101843563


QLabel显示图片和动图

image-20231005102054168

//利用QLabel显示图片
ui->image_lable->setPixmap(QPixmap(":/file/image/cat.png"));//利用QLabel显示 gif动态图片
QMovie * movie = new QMovie(":/file/gif/1.gif");
ui->move_lable->setMovie(movie);
//播放动图
movie->start();

image-20231005102738271


自定义控件封装

目标:实现功能,改变数字,滑动条跟着移动 || 滑动条移动,数字变化

第一步:添加新文件 -Qt-设计师界面类 =>选择widget 会自动生成 (.h .cpp .ui)

第二步:在生成的ui文件当中设计 Q S p i n B o x QSpinBox QSpinBox Q S l i d e r QSlider QSlider两个控件

image-20231005104633752

第三步:在mainWindow.ui文件当中,使用Widget当中使用自定义控件:拖拽一个Widget,点击提升为=>输入提升的类名称=>全局包含=>添加=>提升

image-20231005104843119


smallwidget.h

提供两个函数:

//设置数字
void setNum(int num);
//获取数字
int getNum();

smallwidget.cpp

实现上述的两个函数:

//设置数字
void smallwidget::setNum(int num)
{ui->spinBox->setValue(num);
}//获取数字
int smallwidget::getNum()
{return ui->spinBox->value();
}

在构造函数当中:

//QSpinBox移动 QSlider跟着移动
void(QSpinBox:: * spSignal )(int) = &QSpinBox::valueChanged;
connect(ui->spinBox , spSignal , ui->horizontalSlider , &QSlider::setValue);//QSlider滑动  QSpinBox数字跟着改变
connect(ui->horizontalSlider, &QSlider::valueChanged,ui->spinBox,&QSpinBox::setValue);

widget.cpp的构造函数当中:

//点击获取  获取当控件当前的值
connect(ui->btn_get,&QPushButton::clicked , [=](){qDebug() << ui->widget->getNum(); 
});//设置到一半
connect(ui->btn_set,&QPushButton::clicked,[=](){ui->widget->setNum(50);
});

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

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

相关文章

文档外发控制与安全:实现高效协作与数据安全的关键

随着企业数据量的不断增加&#xff0c;文档外发成为了一个不可避免的需求。然而&#xff0c;很多企业在文档外发过程中存在着很多问题&#xff0c;如数据泄露、信息误用等。因此&#xff0c;如何保证文档外发的安全性和高效性成为了企业亟待解决的问题。飞驰云联Ftrans的文件收…

Kafka Tool(Kafka 可视化工具)安装及使用教程

Kafka Tool&#xff08;Kafka 可视化工具&#xff09;安装及使用教程 Kafka Tool 工具下载 下载地址 http://www.kafkatool.com/download.html 下载界面 不同版本的Kafka对应不同版本的工具&#xff0c;个人使用的是2.11&#xff0c;所以下载的是最新的2.0.8版本&#xff…

C++初阶--C++入门(2)

C入门&#xff08;1&#xff09;链接入口 文章目录 内联函数auto关键字注意事项 基于范围的for循环(C11)nullptr 内联函数 以inline修饰的函数叫做内联函数&#xff0c;编译时C编译器会在调用内联函数的地方展开&#xff0c;没有函数调用建立栈帧的开销&#xff0c;内联函数提…

Spring学习笔记(2)

Spring学习笔记&#xff08;2&#xff09; 一、Spring配置非定义Bean1.1 DruidDataSource1.2、Connection1.3、Date1.4、SqlSessionFactory 二、Bean实例化的基本流程2.1 BeanDefinition2.2 单例池和流程总结 三、Spring的bean工厂后处理器3.1 bean工厂后处理器入门3.2、注册Be…

Flutter的Invalid use of a private type in a public API警告

文章目录 问题描述有问题的源码 问题原因解决方法 问题描述 自己在写Flutter 应用时发现了一个Invalid use of a private type in a public API警告。 发现很多官方的例子也有这个问题。 有问题的源码 有问题的源码如下&#xff1a; class MyTabPage extends StatefulWid…

【Linux学习笔记】代码编辑工具vim

1. vim工具基本模式的转换2. vim命令模式下的各种编辑命令2.1. 光标行定位2.2. 光标自由定位2.3. 复制粘贴2.4. 删除2.5. 文本的大小写替换2.6. 文本的替换2.7. 文本的前删后删2.8. 撤销操作 3. vim底行模式下的命令3.1. 设置行号与取消设置行号3.2. 分屏操作3.3. 在不退出vim的…

【Mac使用技巧】Mac和iPhone间接力功能失效解决总结

问题 Mac OS升级到Monterey版本后&#xff0c;遇到iPhone复制内容后&#xff0c;在Mac无法接力粘贴&#xff0c;此时“接力”功能失效了。 解决过程 参考官网接力功能配置说明 1、重启Mac和iPhone&#xff0c;仍无法接力粘贴 2、重新登录2台设备的iCloud&#xff0c;仍无法…

01、Python 安装 ,Pycharm 安装

目录 安装安装 Python安装 Pycharm 创建项目简单添加文件运行 简单爬取下载小视频 安装 python-3.8.10-amd64.exe – 先安装这个 pycharm-community-2022.2.exe 再安装这个 安装 Python python-3.8.10-amd64.exe 安装&#xff08;这个是其他版本的安装&#xff0c;步骤一样…

ZXing.Net 的Core平台生成二维码

一、引用 二、代码 帮助类 /// <summary>/// ZXing.NET 二维码帮助类/// </summary>public class ZXingHelper{/// <summary>/// 站点二维码的目录/// </summary>private static string QRCodeDirectory "QRCode";/// <summary>/// 使…

MySQL数据库——视图-介绍及基本语法(创建、查询、修改、删除、演示示例)

目录 介绍 语法 创建 查询 修改 删除 演示示例 介绍 视图&#xff08;View&#xff09;是一种虚拟存在的表。视图中的数据并不在数据库中实际存在&#xff0c;行和列数据来自定义视图的查询中使用的表&#xff08;称为基表&#xff09;&#xff0c;并且是在使用视图时动…

爬虫基础 JS逆向

爬虫核心 1. HTTP协议与WEB开发 1. 什么是请求头请求体&#xff0c;响应头响应体 2. URL地址包括什么 3. get请求和post请求到底是什么 4. Content-Type是什么 &#xff08;1&#xff09;简介 HTTP协议是Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;…

SpringBoot+Mybatis实现多数据源+分页

1 主要依赖版本 &#xff08;1&#xff09;SpringBoot 2.7.8 &#xff08;2&#xff09;Mybatis 2.2.2 &#xff08;3&#xff09;Pagehelper 1.3.0 &#xff08;4&#xff09;MySQL 8.0.26 &#xff08;5&#xff09;Oracle 11.2.0.3 2 概述 &#xff08;1&#xff09;…

List集合拆分为多个List

list 拆分 目录概述需求&#xff1a; 设计思路实现思路分析1.list 拆分是2.用stream的parallel实现list的分批处理3.使用stream的parallel实现list的分批处理 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full bus…

[架构之路-239]:目标系统 - 纵向分层 - 中间件middleware

目录 前言&#xff1a; 一、中间件概述 1.1 中间件在软件层次中的位置 1.2 什么是中间件 1.3 为什么需要中间件 1.4 中间件应用场合&#xff08;应用程序不用的底层需求&#xff1a;计算、存储、通信&#xff09; 1.5 中间件分类 - 按内容分 二、嵌入式系统的中间件 2…

ubuntu 修改磁盘名称

前言&#xff1a; 最近重装了ubuntu系统&#xff0c;硬盘名称是一个很长的数字-字母序列&#xff0c;不太好看&#xff0c;根据磁盘的内存&#xff0c;把磁盘重命名了一下。 步骤1&#xff1a;查看当前所有磁盘及分区 sudo fdisk -l 根据存储容量的大小&#xff0c;找到对应…

MTK LCM调试总结

点亮新lcm 1. 修改vendor\mediatek\proprietary\bootable\bootloader\lk\project\len6737m_35_m0.mk CUSTOM_LK_LCM"rm68200_hd720_dsi_vdo"(该为指定LCM) 2. 修改kernel-3.18\arch\arm\configs\len6737m_35_m0_debug_defconfig、len6737m_35_…

Unigui可以使用WebSocket进行客户端之间的实时互相发消息

Unigui可以使用WebSocket进行客户端之间的实时互相发消息。WebSocket是一种支持双向通信的网络协议&#xff0c;可以使客户端和服务器之间实时地进行数据交换。 实现步骤: 1. 在Unigui项目中添加WebSocket组件。 2. 在WebModule的OnCreate事件中开启WebSocket服务。 proced…

uniapp(uncloud) 使用生态开发接口详情4(wangeditor 富文本, 云对象, postman 网络请求)

wangeditor 官网: https://www.wangeditor.com/v4/pages/01-%E5%BC%80%E5%A7%8B%E4%BD%BF%E7%94%A8/01-%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8.html 这里用vue2版本,用wangeditor 4 终端命令: npm i wangeditor --save 开始使用 在项目pages > sy_news > add.vue 页面中…

Docker部署Jumpserver堡垒机

Jumpserver 是全球首款完全开源的堡垒机&#xff0c;使用 GNU GPL v2.0 开源协议&#xff0c;是符合 4A 的专业运维审计系统。 Jumpserver 使用 Python / Django 进行开发&#xff0c;遵循 Web 2.0 规范&#xff0c;配备了业界领先的 Web Terminal 解决方案&#xff0c;交互界面…

优雅而高效的JavaScript——?? 运算符、?. 运算符和 ?. .运算符

&#x1f974;博主&#xff1a;小猫娃来啦 &#x1f974;文章核心&#xff1a;优雅而高效的JavaScript——?? 运算符、?. 运算符和 ?. 运算符 文章目录 引言空值处理的挑战解决方案1&#xff1a;?? 运算符基本用法与 || 运算符的区别实际应用场景举例 解决方案2&#xff…