qt中有一个事件叫做mouseDoubleClickEvent,对应的就会有一个函数来处理这个事件,那就是void mouseDoubleClickEvent (* e )函数,它是一个虚函数,每当对应的类产生双击事件时,就会自动调用这个函数,前提是这个类有这个函数。qt4中以下类有这个函数:
我们使用的QGraphicsView类是继承了QAbstractScrollArea的mouseDoubleClickEvent函数,咱们的任务就是把这个函数重构一下就可以了。
首先在头文件中声明一下:
protected:
void mouseDoubleClickEvent ( QMouseEvent * );
然后cpp文件中就可以这样处理:
/*---------------------------------------------------------------------------
函数名:鼠标双击事件
函数功能:对鼠标双击的响应
函数输入:QMouseEvent *mouseEvent
函数输出:无
备注:
---------------------------------------------------------------------------*/
void 类名::mouseDoubleClickEvent(QMouseEvent *mouseEvent)
{
//这是我声明的一个用来判断是应该全屏还是退出全屏的标志位,是个unsigned char型,可换成bool的
gIndex = ~gIndex; //每次翻转一次
if( mouseEvent->buttons() == Qt::LeftButton) //判断是否左键双击
{
//这个是一个停止双击延时,双击延时用来区分单击和双击,可暂时不用,下一篇文章将介绍如何区分
//delayTimer->stop();
if(gIndex & 0x1)
emit fullScreen(); //发送全屏信号
else
emit subwindow(); //退出全屏
}
}
然后把前面介绍的信号和槽连接起来就能实现简单的双击全屏了。
connect(类名, SIGNAL(fullScreen()), this, SLOT(fullScreenSlot()));
connect(类名, SIGNAL(subwindow()), this, SLOT(subWindowGraphic()));