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()));
相关文章推荐
- ABAP--处理'REUSE_ALV_GRID_DISPLAY'的双击事件
- ABAP--处理'REUSE_ALV_GRID_DISPLAY'的双击事件
- Silverlight 鼠标双击事件处理
- Qt中事件处理的顺序
- 处理Figure的双击事件
- AWT/Swing中处理鼠标双击(多击)以及右键点击的事件处理办法
- Qt 学习(8)Qt Creator中鼠标键盘事件的处理实现自定义鼠标指针(转)
- gridcontrol 的行双击事件的处理
- QT 事件处理
- java小程序中鼠标事件的响应处理(包含右键、双击等)
- 鼠标单击和双击中的事件处理
- DataGrid行随鼠标移动变色及单击双击行事件处理
- qt中的事件处理
- ABAP--处理'REUSE_ALV_GRID_DISPLAY'的双击事件
- Qt中事件处理的顺序
- ABAP--处理'REUSE_ALV_GRID_DISPLAY'的双击事件
- ABAP--处理'REUSE_ALV_GRID_DISPLAY'的双击事件
- java小程序中鼠标事件的响应处理(包含右键、双击等)
- java swing鼠标双击和右键事件处理
- Qt中判断鼠标的双击和单击事件