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

Qt之界面出现、消失动画效果

2017-05-08 19:45 337 查看
(2013-01-18 10:03:33)


转载▼

 分类:

Qt
    在学习Qt的这2、3个月里,对Qt越发感兴趣,从刚开始的盲目、无所适从到现在的学习、研究、熟练、掌握的过程中,我学到了很多东西,也学会了如何通过自学让自己更加成熟、强大起来,如何更有效地提高自己学习、工作效率。

 

关于Qt界面的出现消失效果,我简单介绍两种方法。

1、

 

(1)界面出现

 

将下面这段代码放在界面的构造函数当中就行

 //界面动画,改变透明度的方式出现0 - 1渐变

 QPropertyAnimation *animation = new QPropertyAnimation(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()));

 

   return true;  

}

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();

}

 

    对比看来,第二种方法比较笨拙,而且效率差,所以优先选择方法一,其实学习就是一个累积的过程,没有对比就没有进步,只要是可以行通的,不妨多下点功夫研究一下,条条大路通罗马,知识在与钻研、分享!

注:
    技术在于交流、沟通,转载请注明出处并保持作品的完整性。
    作者:╰☆奋斗ing❤孩子`  原文:http://blog.sina.com.cn/s/blog_a6fb6cc90101awhm.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: