QRubberBand比较简单,没啥好讲的,直接上示例。
.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QRubberBand>
#include <QMouseEvent>
#include <QCheckBox>class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();protected:void mousePressEvent(QMouseEvent *event);void mouseMoveEvent(QMouseEvent *event);void mouseReleaseEvent(QMouseEvent *event);
private:QRubberBand* m_rubberband;QPoint m_oldpoint;QPoint m_oldglobalpoint;QRect m_selectglobalrect;QRect m_selectrect;QList<QCheckBox*> m_boxList;
};
#endif // WIDGET_H

.cpp

#include "widget.h"
#include <QDebug>
#include <QGridLayout>Widget::Widget(QWidget *parent): QWidget(parent)
{QGridLayout* lay = new QGridLayout();for (int i = 0; i < 10; ++i) {for (int j = 0; j < 4; ++j) {QCheckBox* box = new QCheckBox(QString::number((i+1)*j),this);box->setFixedSize(50,20);box->setStyleSheet("background:green");lay->addWidget(box,i,j);m_boxList.append(box);}}this->setLayout(lay);m_rubberband = new QRubberBand(QRubberBand::Rectangle);
}Widget::~Widget()
{
}void Widget::mousePressEvent(QMouseEvent *event)
{m_oldglobalpoint = event->globalPos(); //获取桌面坐标m_oldpoint = event->pos(); //获取当前窗口坐标m_rubberband->setGeometry(QRect(m_oldglobalpoint,m_oldglobalpoint));m_rubberband->show();
}void Widget::mouseMoveEvent(QMouseEvent *event)
{m_selectglobalrect = QRect(m_oldglobalpoint,event->globalPos()); //获取相对桌面的选择区域m_selectrect = QRect(m_oldpoint,event->pos());  //获取相对当前窗口的界面m_rubberband->setGeometry(m_selectglobalrect.normalized());
}void Widget::mouseReleaseEvent(QMouseEvent *event)
{m_rubberband->hide();//存在交叉则选中for (int i = 0; i < m_boxList.size(); ++i) {if (m_selectrect.intersects(m_boxList[i]->geometry())){m_boxList[i]->setChecked(true);}}
}

qt QRubberBand实现区域选择。相关推荐

  1. echarts js 删除框选数据_ECharts进行区域选择

    action.brush   |  * 区域选择相关的行为. action.brush.brush   |  * 触发此 action 可向 echarts 中添加一个或多个选框,例如:myChart ...

  2. php地址地区选择器,区域选择 - 按大区及省市多选区域,可自定义用于其它业务 – 基于ThinkPHP和Bootstrap的极速后台开发框架...

    一款能够快速按大区划分的省市多项选择插件,同时可快速对接FastAdmin. 使用说明 1.在需要弹出区域选择插件的任何元素添加data-toggle="areapicker"属性 ...

  3. opencv 手选roi区域_【opencv学习笔记六】图像的ROI区域选择与复制

    图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...

  4. QT之CheckBox单项选择与多项选择

    QT之CheckBox单项选择与多项选择 QT之CheckBox单项选择与多项选择 开篇之叙 效果图 上代码 结尾 开篇之叙 今天简单的给大家介绍下CheckBox的单项选择与多项选择.我们在使用Ch ...

  5. 简单好用的二级区域选择控件

    效果图如下: 首先需要jQuery v2.1.3的支持,导入包jquery-2.1.3.min.js 其次,区域中的省份,城市是设定好的值吧,这里就需要导入数据包,代码如下: var cityData ...

  6. Dreamweaver 热点区域选择 area

    双击打开Dreamweaver,新建HTML文件 点击插入,选择图像 然后选择所需图片 如果出现如图,点击是即可 然后点击保存即可 左上角 选择拆分 设置所需图片大小 !!! 然后再开始使用工具选择区 ...

  7. ISP-AF相关-聚焦区域选择-清晰度评价

    1.镜头相关 镜头类型 变焦类型: 定焦.手动变焦.自动变焦 光圈: 固定光圈.手动光圈.自动光圈 视场角: 鱼眼镜头.超广角镜头.广角镜头.标准镜头.长焦镜头.超长焦镜头(由大至小) 光圈: 超星光 ...

  8. uni-app自定义区域选择组件

    项目中有一个类似城市区域选择的需求,看了插件市场没有看到贴合的,所以本小菜鸟决定自己动手,仅以此篇文章记录心路历程,免得以后忘记了. 城市选择主要划分为省.市.区三个大级,区级下又有多个门店.原型页面 ...

  9. Qt Widgets——子区域和子窗口

    QMdiArea 一般使用于主窗口QMainWindow,用于容纳多个子窗口QMdiSubWindow qt creator 3.0的设计师有MdiArea可直接拖入使用. 界面如下,图中灰色框即是个 ...

最新文章

  1. python二叉树遍历算法_分享python实现的二叉树定义与遍历
  2. Centos7 设置DNS 服务器
  3. C++中的运算符重载基础
  4. 洛谷P1816 忠诚 题解
  5. 方舟子:如何避免学术不端行为(zz)
  6. 3分钟学会python_3分钟学会一个Python小技巧
  7. io操作是指什么_各种IO模型,一篇打尽
  8. js事件之event.preventDefault()与event.stopPropagation()用法区别
  9. WordPress搬家全攻略
  10. Linux 设备驱动模型中的class(类)
  11. Centos 升级GLIBCXX3.4.25
  12. 自然语言10_分类与标注
  13. 最小二乘法幂函数C语言,跪求最小二乘法幂函数C 语言程序
  14. NET多线程探索-线程同步和通信
  15. oracle分页的三种方式,oracle 使用rownum的三种分页方式
  16. shared_ptr使用场景、陷阱、性能分析,使用建议
  17. Android应用开发的一些思考
  18. VS2008安装和打补丁
  19. 计算机竞赛奖学金申请书,计算机专业奖学金申请书
  20. 【修真院“善良”系列之十九】他删库了他跑路了

热门文章

  1. 【三子棋】C语言版——妈咪级讲解
  2. 服开与编排,老兵新传
  3. c语言怎样产生随机数组中,C语言/C++怎样产生随机数
  4. mysql初始化步骤_MySQL初始化步骤_MySQL
  5. 物联网数字管理养殖场
  6. Linux修改时间显示问题
  7. epoll用到的epoll_create,epoll_ctl, epoll_wait三个函数,以及epoll的工作模式
  8. 腾讯随心播配置及开发
  9. IT技术培训,有用!但不大!!
  10. Segment Anything Model(SAM)