QT实现类似QQ的抖屏效果
2015-06-23 19:44
387 查看
抖屏效果的实现说白了就是通过设置定时器,循环定时并不断变换mainWindow的位置来实现的。废话不多说直接上代码。
mainwindow.h文件:
mainwindow.cpp文件:
}
///////////////////////////////////////////////////////////////////////////////////////////
main.cpp:
int main(int argc, char *argv[])
{
QTimer _pShakeWindowTimer=new QTimer(this);
QPushButton _shakeBtn=new QPushButton(this);
connect(&_pShakeWindowTimer, SIGNAL(timeout()), this,SLOT(onShakeWindowTimeOut()));
connect(_shakeBtn,SIGNAL(clicked()),this,SLOT(onClickShakeBtn()));
_pShakeWindowTimer.setInterval(40);//设置定时器为40毫秒
}
void onClickShakeBtn()
{
_pShakeWindowTimer.start();
App::wnd()->setShakeNumber();
}
///////////////////////////////////////////////
全文完(代码有点凌乱,大家凑活看,忙完这段时间了把代码整整)
mainwindow.h文件:
[code]void shakeWindow();//抖窗口 void setShakeNumber();//把m_nTimes置零 int m_nTimes=0; QPoint m_curPos; QTimer* m_timer;
mainwindow.cpp文件:
[code]Window::Window(QWidget *parent) ,m_timer(new QTimer(this)) ,m_nTimes(0) ,m_curPos(QPoint()) { } void Window::setShakeNumber() { m_nTimes = 0; } void Window::shakeWindow() { m_curPos = this->pos(); m_timer->stop(); if (m_nTimes <= MaxLimitTimes) { ++m_nTimes; switch (m_nTimes % 4) { case 1: { QPoint tmpPos(m_curPos.x() + MaxLimitSpace, m_curPos.y() - MaxLimitSpace); this->move(tmpPos); } break; case 2: { QPoint tmpPos(m_curPos.x() - MaxLimitSpace, m_curPos.y() - MaxLimitSpace); this->move(tmpPos); } break; case 3: { QPoint tmpPos(m_curPos.x() - MaxLimitSpace, m_curPos.y() + MaxLimitSpace); this->move(tmpPos); } break; case 0: { QPoint tmpPos(m_curPos.x() + MaxLimitSpace, m_curPos.y() + MaxLimitSpace); this->move(tmpPos); } break; default: this->move(m_curPos); break; } m_timer->start(); }
}
///////////////////////////////////////////////////////////////////////////////////////////
main.cpp:
int main(int argc, char *argv[])
{
QTimer _pShakeWindowTimer=new QTimer(this);
QPushButton _shakeBtn=new QPushButton(this);
connect(&_pShakeWindowTimer, SIGNAL(timeout()), this,SLOT(onShakeWindowTimeOut()));
connect(_shakeBtn,SIGNAL(clicked()),this,SLOT(onClickShakeBtn()));
_pShakeWindowTimer.setInterval(40);//设置定时器为40毫秒
}
void onClickShakeBtn()
{
_pShakeWindowTimer.start();
App::wnd()->setShakeNumber();
}
///////////////////////////////////////////////
全文完(代码有点凌乱,大家凑活看,忙完这段时间了把代码整整)
相关文章推荐
- Qt程序运行居中显示
- 【Qt编程】基于Qt的词典开发系列<七>--调用网络API
- 【Qt编程】基于Qt的词典开发系列<九>--JSON数据解析
- 【Qt编程】基于Qt的词典开发系列<八>--用户登录及API调用的实现
- 【Qt编程】基于Qt的词典开发系列--后序
- 【Qt编程】基于Qt的词典开发系列--后序
- qt的buttonBox
- qt4.8.4+mingw在windows上的安装
- Qt 出现error: expected constructor, destructor, or type conversion before ‘typedef’
- 笔记2:win7下 OpenCv2.4.3+Qt5.0.1版本的配置
- Qt初试
- QTPtest中Action种类
- vs qt中增加png图标
- Qt Creater调试时一直出现:“DEBUGGER: Waiting for debug socket connect” 和“DEBUGGER: go to sleep”
- vs中使用qt的qrc生成rcc资源文件
- qt中的qrc文件和rcc文件
- qt显示图片汇总
- Qt for Visual Studio 版本中编译报 qtmaind.lib问题
- Qt中各个控件利用Qt Designer来setStyleSheet
- Qt 编码中的某一字从 UTF-8 转换到 UNICODE 国际化时可能用到