在显示窗口中划分局部显示窗口,在局部窗口区域中根据鼠标选择局部响应鼠标事件,此方法可以用来操作一个窗口显示多张图片,进行图片选择操作,被选中的
图片边框用不同的颜色高亮显示.基本实现代码如下
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);
}
图片边框用不同的颜色高亮显示.基本实现代码如下
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);
}