qt QRubberBand实现区域选择。
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实现区域选择。相关推荐
- echarts js 删除框选数据_ECharts进行区域选择
action.brush | * 区域选择相关的行为. action.brush.brush | * 触发此 action 可向 echarts 中添加一个或多个选框,例如:myChart ...
- php地址地区选择器,区域选择 - 按大区及省市多选区域,可自定义用于其它业务 – 基于ThinkPHP和Bootstrap的极速后台开发框架...
一款能够快速按大区划分的省市多项选择插件,同时可快速对接FastAdmin. 使用说明 1.在需要弹出区域选择插件的任何元素添加data-toggle="areapicker"属性 ...
- opencv 手选roi区域_【opencv学习笔记六】图像的ROI区域选择与复制
图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...
- QT之CheckBox单项选择与多项选择
QT之CheckBox单项选择与多项选择 QT之CheckBox单项选择与多项选择 开篇之叙 效果图 上代码 结尾 开篇之叙 今天简单的给大家介绍下CheckBox的单项选择与多项选择.我们在使用Ch ...
- 简单好用的二级区域选择控件
效果图如下: 首先需要jQuery v2.1.3的支持,导入包jquery-2.1.3.min.js 其次,区域中的省份,城市是设定好的值吧,这里就需要导入数据包,代码如下: var cityData ...
- Dreamweaver 热点区域选择 area
双击打开Dreamweaver,新建HTML文件 点击插入,选择图像 然后选择所需图片 如果出现如图,点击是即可 然后点击保存即可 左上角 选择拆分 设置所需图片大小 !!! 然后再开始使用工具选择区 ...
- ISP-AF相关-聚焦区域选择-清晰度评价
1.镜头相关 镜头类型 变焦类型: 定焦.手动变焦.自动变焦 光圈: 固定光圈.手动光圈.自动光圈 视场角: 鱼眼镜头.超广角镜头.广角镜头.标准镜头.长焦镜头.超长焦镜头(由大至小) 光圈: 超星光 ...
- uni-app自定义区域选择组件
项目中有一个类似城市区域选择的需求,看了插件市场没有看到贴合的,所以本小菜鸟决定自己动手,仅以此篇文章记录心路历程,免得以后忘记了. 城市选择主要划分为省.市.区三个大级,区级下又有多个门店.原型页面 ...
- Qt Widgets——子区域和子窗口
QMdiArea 一般使用于主窗口QMainWindow,用于容纳多个子窗口QMdiSubWindow qt creator 3.0的设计师有MdiArea可直接拖入使用. 界面如下,图中灰色框即是个 ...
最新文章
- python二叉树遍历算法_分享python实现的二叉树定义与遍历
- Centos7 设置DNS 服务器
- C++中的运算符重载基础
- 洛谷P1816 忠诚 题解
- 方舟子:如何避免学术不端行为(zz)
- 3分钟学会python_3分钟学会一个Python小技巧
- io操作是指什么_各种IO模型,一篇打尽
- js事件之event.preventDefault()与event.stopPropagation()用法区别
- WordPress搬家全攻略
- Linux 设备驱动模型中的class(类)
- Centos 升级GLIBCXX3.4.25
- 自然语言10_分类与标注
- 最小二乘法幂函数C语言,跪求最小二乘法幂函数C 语言程序
- NET多线程探索-线程同步和通信
- oracle分页的三种方式,oracle 使用rownum的三种分页方式
- shared_ptr使用场景、陷阱、性能分析,使用建议
- Android应用开发的一些思考
- VS2008安装和打补丁
- 计算机竞赛奖学金申请书,计算机专业奖学金申请书
- 【修真院“善良”系列之十九】他删库了他跑路了