Qt之界面出现、消失动画效果
2017-11-22 10:10
375 查看
在学习Qt的这2、3个月里,对Qt越发感兴趣,从刚开始的盲目、无所适从到现在的学习、研究、熟练、掌握的过程中,我学到了很多东西,也学会了如何通过自学让自己更加成熟、强大起来,如何更有效地提高自己学习、工作效率。
关于Qt界面的出现消失效果,我简单介绍两种方法。
1、
(1)界面出现
将下面这段代码放在界面的构造函数当中就行
//界面动画,改变透明度的方式出现0 - 1渐变
QPropertyAnimation *animation = newQPropertyAnimation(this, "windowOpacity");
animation->setDuration(1000);
animation->setStartValue(0);
animation->setEndValue(1);
animation->start();
(2)界面消失:
既然是界面消失,应当是按下关闭按钮时界面消失,如下:
//连接关闭按钮信号和槽
QObject::connect(close_button, SIGNAL(clicked()), this,SLOT(closeWidget()));
//槽函数如下,主要进行界面透明度的改变,完成之后连接槽close来调用closeEvent事件
bool LoginDialog::closeWidget()
{
//界面动画,改变透明度的方式消失1 - 0渐变
QPropertyAnimation *animation= new QPropertyAnimation(this, "windowOpacity");
animation->setDuration(1000);
animation->setStartValue(1);
animation->setEndValue(0);
animation->start();
connect(animation,SIGNAL(finished()), this, SLOT(close()));
returntrue;
}
void LoginDialog::closeEvent(QCloseEvent *)
{
//退出系统
QApplication::quit();
}
2、
在这里贴出消失时候的代码,其实出现的时候类似
界面消失:
void LoginDialog::closeEvent(QCloseEvent *)
{
for(int i=0; i< 100000; i++)
{
if(i<10000)
{
this->setWindowOpacity(0.9);
}
else if(i<20000)
{
this->setWindowOpacity(0.8);
}
else if(i<30000)
{
this->setWindowOpacity(0.7);
}
else if(i<40000)
{
this->setWindowOpacity(0.6);
}
else if(i<50000)
{
this->setWindowOpacity(0.5);
}
else if(i<60000)
{
this->setWindowOpacity(0.4);
}
else if(i<70000)
{
this->setWindowOpacity(0.3);
}
else if(i<80000)
{
this->setWindowOpacity(0.2);
}
else if(i<90000)
{
this->setWindowOpacity(0.1);
}
else
{
this->setWindowOpacity(0.0);
}
}
//进行窗口退出
QApplication::quit();
}
对比看来,第二种方法比较笨拙,而且效率差,所以优先选择方法一,其实学习就是一个累积的过程,没有对比就没有进步,只要是
4000
可以行通的,不妨多下点功夫研究一下,条条大路通罗马,知识在与钻研、分享!
注:
技术在于交流、沟通,转载请注明出处并保持作品的完整性。
作者:╰☆奋斗ing❤孩子` 原文:http://blog.sina.com.cn/s/blog_a6fb6cc90101awhm.html。
关于Qt界面的出现消失效果,我简单介绍两种方法。
1、
(1)界面出现
将下面这段代码放在界面的构造函数当中就行
//界面动画,改变透明度的方式出现0 - 1渐变
QPropertyAnimation *animation = newQPropertyAnimation(this, "windowOpacity");
animation->setDuration(1000);
animation->setStartValue(0);
animation->setEndValue(1);
animation->start();
(2)界面消失:
既然是界面消失,应当是按下关闭按钮时界面消失,如下:
//连接关闭按钮信号和槽
QObject::connect(close_button, SIGNAL(clicked()), this,SLOT(closeWidget()));
//槽函数如下,主要进行界面透明度的改变,完成之后连接槽close来调用closeEvent事件
bool LoginDialog::closeWidget()
{
//界面动画,改变透明度的方式消失1 - 0渐变
QPropertyAnimation *animation= new QPropertyAnimation(this, "windowOpacity");
animation->setDuration(1000);
animation->setStartValue(1);
animation->setEndValue(0);
animation->start();
connect(animation,SIGNAL(finished()), this, SLOT(close()));
returntrue;
}
void LoginDialog::closeEvent(QCloseEvent *)
{
//退出系统
QApplication::quit();
}
2、
在这里贴出消失时候的代码,其实出现的时候类似
界面消失:
void LoginDialog::closeEvent(QCloseEvent *)
{
for(int i=0; i< 100000; i++)
{
if(i<10000)
{
this->setWindowOpacity(0.9);
}
else if(i<20000)
{
this->setWindowOpacity(0.8);
}
else if(i<30000)
{
this->setWindowOpacity(0.7);
}
else if(i<40000)
{
this->setWindowOpacity(0.6);
}
else if(i<50000)
{
this->setWindowOpacity(0.5);
}
else if(i<60000)
{
this->setWindowOpacity(0.4);
}
else if(i<70000)
{
this->setWindowOpacity(0.3);
}
else if(i<80000)
{
this->setWindowOpacity(0.2);
}
else if(i<90000)
{
this->setWindowOpacity(0.1);
}
else
{
this->setWindowOpacity(0.0);
}
}
//进行窗口退出
QApplication::quit();
}
对比看来,第二种方法比较笨拙,而且效率差,所以优先选择方法一,其实学习就是一个累积的过程,没有对比就没有进步,只要是
4000
可以行通的,不妨多下点功夫研究一下,条条大路通罗马,知识在与钻研、分享!
注:
技术在于交流、沟通,转载请注明出处并保持作品的完整性。
作者:╰☆奋斗ing❤孩子` 原文:http://blog.sina.com.cn/s/blog_a6fb6cc90101awhm.html。
相关文章推荐
- Qt之界面出现、消失动画效果
- Qt之界面出现、消失动画效果(简单好用)
- Qt之界面出现、消失动画效果
- Qt之界面出现、消失动画效果
- qt之界面的出现与消失的动画效果
- Qt之界面出现、消失动画效果
- Qt之界面出现、消失动画效果
- Qt学习教程之对话框消失动画效果
- 界面出现奇怪的动画,各种移动效果
- 切换界面之后 SwipeRefreshLayout 动画效果暂停,以及不消失的解决方案
- QT对话框出现消失的效果
- 模拟视频播放器控制界面时动画效果出现的问题
- Qt 3D教程(四)结合Qt Quick来实现动画的效果
- 采用CSS3设计的登录界面,动态效果(动画)
- 使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
- div的溢出和隐藏加动画出现鼠标滑动效果
- 【Android UI设计与开发】第03期:引导界面(三)仿微信引导界面以及动画效果
- Qt5.2.1 virtualbox 安装后welcome界面没有出现 原因
- 界面进入和退出的动画效果
- Qt动画效果展示