您的位置:首页 > 编程语言 > Qt开发

qt 双击事件处理

2014-06-04 20:51 489 查看


qt双击事件响应和实现

      接着上面的播放器全屏功能来写,一般播放器的全屏都是通过双击左键来实现的。
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()));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: