qt 中鼠标落点区域判断方法

在显示窗口中划分局部显示窗口,在局部窗口区域中根据鼠标选择局部响应鼠标事件,此方法可以用来操作一个窗口显示多张图片,进行图片选择操作,被选中的


图片边框用不同的颜色高亮显示.基本实现代码如下
m_showPixmap = QPixmap(300,600);
::mousePressEvent(QMouseEvent *event)
{
 QRect eventRegion1(0,0,100,100);
 QRect eventRegion2(100,0,100,100);
 QRect eventRegion3(200,0,100,100);
 QRect eventRegion4(0,100,100,100);
 ............................


 if( (event->button() == Qt::LeftButton) && b_input)
 {
  m_lastPoint = event->pos();
  b_input=false;
 }
 else
 {
  if( eventRegion1.contains( event->pos()))
  {
   setSelectMode(1);
  }
  if( eventRegion2.contains( event->pos()))
  {
   setSelectMode(2);
  }
  if( eventRegion3.contains( event->pos()))
  {
   setSelectMode(3);
  }
  if( eventRegion4.contains( event->pos()))
  {
   setSelectMode(4);
  }
  ........
 }
}


::setSelectMode(const int &modle)
{
 QPainter painter(&m_showPixmap);
 i_selectModle = modle;
 painter.setPen(m_penColor);
 
 switch(i_selectModle)
 {
  case 1:
  painter.drawRect(0,0,100,100);
  break;
  case 2:
  painter.drawRect(100,0,100,100);
  break;
  case 3:
  painter.drawRect(200,0,100,100);
  break;
  case 4:
  painter.drawRect(0,100,100,100);
  break;
  .....................
 }
 
 setPixmap(m_showPixmap);


}


::setPixmap(const QPixmap pixmap)
{
 m_pixmap = pixmap;
 resize(m_pixmap.size());
 update();
}


//绘制主窗口的大小
paintEvent(QPaintEvent *event )
{
 Q_UNUSED(event);
 Qpainter painter(this);
 painter.drawPixmap(0,0,300,600,m_showPixmap, 0,0,300,600);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值