记录一种多个按钮中每次只能选中一个的实现方式
阐述
本文旨在说明实现的思路。
当窗口创建很多QPushButton或者QPushButton的子类的时候,若要实现在众多的按钮中,每次被点击的按钮被选中,下一次点击另一个按钮的时候,上一个被选中的按钮恢复被选中之前的颜色,可以使用下面这种实现。
思路
分4步:
1.创建按钮的时候,设置按钮可选中,使用函数setCheckable;
2.创建按钮的时候,将所有创建的按钮保存在一个容器中;
3.绑定按钮的点击信号与处理点击的槽函数;
4.定义类的全局变量,QPushButton*类型的指针,或者自定义的继承于QPushButton的按钮的指针,用来指向上一次被选中的按钮对象,构造函数中初始化该指针为nullptr,在按钮点击信号绑定的槽函数中,判断该指针是否为空,不为空时,将该指针所指向的对象设置为非选中,(即将上一次被选中的按钮设置为为选中),然后更新当前被选中的按钮为上一次选中的按钮。
大体实习如下:
//按钮可选中,选中下一个前将之前的先设置为未选中if (m_beforeCheckedBtn) {m_beforeCheckedBtn->setChecked(false);}saveBeforeBtnCheckedBtn();
上述代码中的函数的实现如下:
void saveBeforeBtnCheckedBtn()
{QMap<int,myButton*>::iterator it;for (it = m_idBtnMap.begin(); it != m_idBtnMap.end(); ++it) {if (it.value()->isChecked()) {myButton* temp = it.value();m_beforeCheckedBtn = temp;break;}}
}
上述代码只是部分,重在理解其大意。
记录一种多个按钮中每次只能选中一个的实现方式相关推荐
- 【操作系统】某寺庙,住着一个老和尚和若干小和尚,有一个水缸,由小和尚提水入缸供老和尚饮用。水缸可以容纳10桶水,水取自同一口井中,由于水井口窄,每次只能容纳一个水桶取水,水桶总数为3个。每次往水缸中倒
题目 某寺庙,住着一个老和尚和若干小和尚,有一个水缸,由小和尚提水入缸供老和尚饮用.水缸可以容纳10桶水,水取自同一口井中,由于水井口窄,每次只能容纳一个水桶取水,水桶总数为3个.每次往水缸中倒水与从 ...
- 某寺庙,有小和尚、老和尚若干。有一水缸,由小和尚用水桶从井中提水入缸,老和尚用水桶从缸里取水饮用。水缸可容30桶水,水取自同一井中。水井径窄,每次只能容一个水桶取水。水桶总数为5个。每次入、取缸水仅为
和尚取水问题 某寺庙,有小和尚.老和尚若干.有一水缸,由小和尚用水桶从井中提水入缸,老和尚用水桶从缸里取水饮用.水缸可容30桶水,水取自同一井中.水井径窄,每次只能容一个水桶取水.水桶总数为5个.每次 ...
- 给定一个由n个圆盘组成的塔,这些圆盘按照大小递减的方式套在第一根桩柱上。现要将整个塔移动到另一根桩柱上,每次只能移动一个圆盘,且较大的圆盘在移动过程中不能放置在较小的圆盘上面
对汉诺塔问题详解,给定一个由n个圆盘组成的塔,这些圆盘按照大小递减的方式套在第一根桩柱上.现要将整个塔移动到另一根桩柱上,每次只能移动一个圆盘,且较大的圆盘在移动过程中不能放置在较小的圆盘上面: 输入 ...
- 一、汉诺塔问题 汉诺塔是由三根杆子A,B,C组成的。A杆上有n个(n>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:每次只能移动一个圆盘;大盘不能叠在小盘上面。提示:可将圆
一.汉诺塔问题 汉诺塔是由三根杆子A,B,C组成的.A杆上有n个(n>1)穿孔圆盘,盘的尺寸由下到上依次变小.要求按下列规则将所有圆盘移至C杆:每次只能移动一个圆盘:大盘不能叠在小盘上面.提示: ...
- 一个java源文件允许_一个Java源文件中最多只能有一个class定义
一个Java源文件中最多只能有一个class定义 答:× 确诊甲状腺功能紊乱的常规指标是 答:FT3和FT4 I will not let my children in that way. 答:be ...
- 使用嵌套循环,打印四行五列星星矩形(每次只能打印一个*)
使用嵌套循环,打印四行五列星星矩形(每次只能打印一个*) ***** ***** ***** ***** 提示:打印不换行,使用 print 方法,不要加 ln 分析: 把*****看成一个整体 字符 ...
- 打印机顺序打印问题(一台打印机有若干个任务,但是打印机每次只能打印一个任务,每个任务是有优先级的,从1到9)
一台打印机有若干个任务,但是打印机每次只能打印一个任务,每个任务是有优先级的,从1到9.打印的时候从序列的第一个开始,如果第一个的 优先级不是最大的,则将其出队,并加入队尾.若其优先级是最大的,则直接 ...
- 51单片机主函数实现P1口120ms间隔从P1.7口向右循环进行流水灯每次只能亮一个,进入外部中断是进行120ms的延时灯的亮灭各一次
51单片机主函数实现P1口120ms间隔从P1.7口向右循环进行流水灯每次只能亮一个,进入外部中断是进行120ms的延时灯的亮灭各一次 #include <reg51.h> #includ ...
- b树删除节点每次只能删一个吗_深入理解数据库系统之存储存引擎(B树)
二叉搜索树不适合应用到磁盘上,因为它的扇出数较低并且平衡时需要大量的节点重定位和指针更新.B树通过增加每个节点存储项的数量(高扇出)和减少频繁的平衡操作来解决这些问题.下面我们将讨论了B树的内部结构, ...
最新文章
- Linux打印介绍【转贴】
- Webservice接口
- SAP License:SAP RKE_HZSTMP标准时间转EXCEL日期方法
- MySQL复习值代码知识点(1)
- 祝福 Stephan Ewen,Apache Flink 将继续前行 !
- c++ STL模板(一)
- de4dot构建过程
- 必须安装三星系列android系统智能手机usb驱动程序,三星usb手机驱动
- ps4手柄 android,ps4手柄配对手机,PS4手柄怎么连接安卓手机,求
- 今日头条推荐算法研究
- 电源检测工具OCCT v10.1.6
- Python中的数据序列(元组、集合、字典)
- C++ Error C2280 尝试引用已删除的函数
- Python函数式编程(fn)
- ubuntu和windows之间实现复制粘贴
- Telegram图文详解-- 编程机器人(谷歌脚本服务)
- 第四十天 阿乐在其中—Android小游戏的飞机(四)加入敌人
- Shell脚本发送邮件(CentOS+mailx+QQ邮箱)
- 2021年塔式起重机司机考试及塔式起重机司机复审考试
- oracle 安装之后