改造QCheckBox,单机内部任意地方都可选中
来源:互联网 发布:海康威视端口未生效 编辑:程序博客网 时间:2024/06/05 11:34
1,简介
QT自带的复选框QCheckBox,只有当点击在方块图标或者文字内时,才会有选中/取消选中的效果。
(这里为了显示QCheckBox范围,将背景着色)
而有时候,我们需要点击背景也能选中,以实现一些特殊的效果。
2,思路
直接自绘实现其实也比较简单,这里介绍改造QCheckBox类的方法。
观察QCheckBox,当鼠标弹起时才进行了选中。
直接想到的就是重载mouseReleaseEvent方法,不管在哪里点击,都改变选中状态。
class MyCheckBox : public QCheckBox{public: MyCheckBox(QString text,QWidget *parent = Q_NULLPTR); MyCheckBox(QWidget *parent = Q_NULLPTR);protected: void mouseReleaseEvent(QMouseEvent *e);};
void MyCheckBox::mouseReleaseEvent(QMouseEvent *e){ setChecked(!isChecked());}
测试发现,已经可以实现点击任意地方进行选中和取消选中了。
但是有些信号没有触发,如click信号。这里手动加上。toggled信号是正常的。
void MyCheckBox::mouseReleaseEvent(QMouseEvent *e){ setChecked(!isChecked()); emit clicked(isChecked());}
3,主要代码
MyCheckBox.h:
#ifndef MYCHECKBOX_H#define MYCHECKBOX_H#include <QCheckBox>class MyCheckBox : public QCheckBox{public: MyCheckBox(QString text,QWidget *parent = Q_NULLPTR); MyCheckBox(QWidget *parent = Q_NULLPTR);protected: void mouseReleaseEvent(QMouseEvent *e);};#endif // MYCHECKBOX_H
MyCheckBox.cpp:
#include "MyCheckBox.h"MyCheckBox::MyCheckBox(QString text,QWidget *parent) : QCheckBox(text,parent){}MyCheckBox::MyCheckBox(QWidget *parent) : QCheckBox(parent){}void MyCheckBox::mouseReleaseEvent(QMouseEvent *e){ setChecked(!isChecked()); emit clicked(isChecked());}
使用的地方直接QCheckBox提升为MyCheckBox即可。
4,源码
https://pan.baidu.com/s/1miKIClU
阅读全文
0 0
- 改造QCheckBox,单机内部任意地方都可选中
- IE中点击文本任意地方都可以执行onclick等事件的方法
- 使对话框点任意地方都能拖动
- QCheckBox
- QTreeWidget项中添加控件(QCheckBox)和获取控件(QCheckBox)
- MFC 对话框中实现任意地方拖拽功能
- 点击一行中任意地方,复选框选中
- 任意地方获取Context
- 如何在QTableWidget中实现QCheckBox
- Qt 表格中插入QCheckBox并居中
- 都不是好地方
- GridView点击任意地方选中
- 实现任意地方拖拽
- android任意地方退出app
- TextView文本可选中
- 标签可以在jsp中任意地方使用(与js混用)
- MathType中如何实现上下两行公式“=”号或者任意地方对齐
- 网站改造中..
- k-palindrome
- 集合源码学习(八):HashSet和TreeSet
- 萌新第一次使用函数后的一些体会(欢迎同学指正)
- 微生物组入门必读+宏基因组实操课程=新老司机赶快上车
- 一个有用的东西matio
- 改造QCheckBox,单机内部任意地方都可选中
- 171014 逆向-Reversing.kr(x64 Lotto)
- node.js初识
- (八)ElasticSearch常用查询语法
- angular表单校验-模板驱动表单校验
- 文章标题 Coderforces 343D : Water Tree(dfs序+线段树)
- 使用 nice、bulimic 和 cgroups 限制 cpu 占用率
- opencv_highgui错误
- thinkphp 404页面定制