Qt技巧(二)-滑动界面,轮询控件,循环操作控件

2024-09-01 14:20

本文主要是介绍Qt技巧(二)-滑动界面,轮询控件,循环操作控件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在Qt界面开发过程中,我们常常要对同类部件,具有同样功能的一系列部件进行操作,比如:
在这里插入图片描述
这个页面该怎么设计,中间的几个选项该怎么操作?

我们在主工程中添加一个设计师界面类,类名设置为“BrandForm”。
里边的每个选项以QPushButton来做,分别命名为:“btBrand1”,“btBrand2”,“btBrand3”…
将这些Button放在QScrollArea里,以实现上下滑动。
一个按钮怎么做成上图中的样式呢,样式表就可以实现:

QPushButton#btBrand1,
QPushButton#btBrand2,
QPushButton#btBrand3,
QPushButton#btBrand4,
QPushButton#btBrand5{background-image: url(:/image/Image/rbNormal.png);background-repeat: no-repeat;background-origin: padding;background-position: right center;padding-left:10px;padding-right:30px;border: none;border-radius: 4px;font: bold normal 24px "Source Han Sans CN";color: rgba(66, 66, 66, 1);background-color: rgba(255, 255, 255, 1);text-align: left;width: 280px;height: 58px;outline: none;
}
QPushButton#btBrand1:pressed,
QPushButton#btBrand1:checked,
QPushButton#btBrand2:pressed,
QPushButton#btBrand2:checked,
QPushButton#btBrand3:pressed,
QPushButton#btBrand3:checked,
QPushButton#btBrand4:pressed,
QPushButton#btBrand4:checked,
QPushButton#btBrand5:pressed,
QPushButton#btBrand5:checked{color: rgba(177, 32, 41, 1);background-image: url(:/image/Image/rbSelected.png);
}

接下来怎么实现这几个按钮的排他性呢,也就是点了这个,其他的就变成未点击状态呢?
通过设置这几个Button的属性,选中“checkable”使能选中属性,选中“autoExclusive”互斥模式这两个属性即可。如下:

在这里插入图片描述
当然,你也可以通过代码形式来实现,将这几个Button放在一个QButtonGroup组中也可以。

    ui->btBrand1->setCheckable(true);ui->btBrand2->setCheckable(true);ui->btBrand3->setCheckable(true);ui->btBrand4->setCheckable(true);ui->btBrand5->setCheckable(true);if(nullptr == btGroup){btGroup = new QButtonGroup(this);btGroup->addButton(ui->btBrand1);btGroup->addButton(ui->btBrand2);btGroup->addButton(ui->btBrand3);btGroup->addButton(ui->btBrand4);btGroup->addButton(ui->btBrand5);}btGroup->setExclusive(true);

两种方式都可以了,选其一即可。

接下来用代码实现滑动,并连接按钮的点击信号

//设置滑动ui->scrollArea->verticalScrollBar()->style()->polish(ui->scrollArea->verticalScrollBar());QScroller::ScrollerGestureType gesture = QScroller::LeftMouseButtonGesture;QScroller::scroller(ui->scrollArea)->grabGesture(ui->scrollArea, gesture);ui->scrollArea->verticalScrollBar()->setValue(0);
//按钮点击connect(ui->btBrand1, &QPushButton::clicked, this, [=](){m_strName = ui->btBrand1->text();});connect(ui->btBrand2, &QPushButton::clicked, this, [=](){m_strName = ui->btBrand2->text();});connect(ui->btBrand3, &QPushButton::clicked, this, [=](){m_strName = ui->btBrand3->text();});connect(ui->btBrand4, &QPushButton::clicked, this, [=](){m_strName = ui->btBrand4->text();});
//获取你选择的名字
ui->label.setText(m_strName);

接下来我想对这些品牌轮询怎么操作呢?

//假定有5个选项
int nCount = 5;for(int n=0; n< nCount; n++){QString strName = QString("btBrand") + QString::number(n+1);//重点是这个findChild按object的名称找到对应子对象QPushButton *cbFind = this->findChild<QPushButton*>(strName);if(cbFind->isChecked()){//轮询一圈,找到你要操作的那一个//比如设置名称cbFind->setText("");//比如设置大小cbFind->setFixedSize(labelSize);//比如设置可见cbFind->setVisible(false);}}

学会了么

这篇关于Qt技巧(二)-滑动界面,轮询控件,循环操作控件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1127181

相关文章

Java Stream流与使用操作指南

《JavaStream流与使用操作指南》Stream不是数据结构,而是一种高级的数据处理工具,允许你以声明式的方式处理数据集合,类似于SQL语句操作数据库,本文给大家介绍JavaStream流与使用... 目录一、什么是stream流二、创建stream流1.单列集合创建stream流2.双列集合创建str

Python正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

QT Creator配置Kit的实现示例

《QTCreator配置Kit的实现示例》本文主要介绍了使用Qt5.12.12与VS2022时,因MSVC编译器版本不匹配及WindowsSDK缺失导致配置错误的问题解决,感兴趣的可以了解一下... 目录0、背景:qt5.12.12+vs2022一、症状:二、原因:(可以跳过,直奔后面的解决方法)三、解决方

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

Java实现复杂查询优化的7个技巧小结

《Java实现复杂查询优化的7个技巧小结》在Java项目中,复杂查询是开发者面临的“硬骨头”,本文将通过7个实战技巧,结合代码示例和性能对比,手把手教你如何让复杂查询变得优雅,大家可以根据需求进行选择... 目录一、复杂查询的痛点:为何你的代码“又臭又长”1.1冗余变量与中间状态1.2重复查询与性能陷阱1.

Python内存优化的实战技巧分享

《Python内存优化的实战技巧分享》Python作为一门解释型语言,虽然在开发效率上有着显著优势,但在执行效率方面往往被诟病,然而,通过合理的内存优化策略,我们可以让Python程序的运行速度提升3... 目录前言python内存管理机制引用计数机制垃圾回收机制内存泄漏的常见原因1. 循环引用2. 全局变