0
QDialog有许多函数可以打开和关闭,如open(),show(),exec(),close(),hide()。我不知道要重新实现哪个函数()。实现模态QDialog的淡入/淡出
//编辑: 在showEvent()函数中启动动画是个不错的选择。
QDialog有许多函数可以打开和关闭,如open(),show(),exec(),close(),hide()。我不知道要重新实现哪个函数()。实现模态QDialog的淡入/淡出
//编辑: 在showEvent()函数中启动动画是个不错的选择。
简短的回答:void exec()
长回答:void exec()
但
你需要决定要如何“淡入”的工作,并获得如何使用QPropertyAnimation
例如,你可以改变对话框的不透明度:
#include <QPropertyAnimation>
int MyDialog::exec()
{
this->setWindowOpacity(0.0);
QPropertyAnimation* anim = new QPropertyAnimation(this, "windowOpacity");
anim->setDuration(5000); // will take 5 seconds
anim->setEasingCurve(QEasingCurve::OutBack); // just demonstration, there are a lot of curves to choose
anim->setStartValue(0.0);
anim->setEndValue(1.0);
anim->start(QAbstractAnimation::DeleteWhenStopped);
return QDialog::exec();
}
int main(int argc, char** argv)
{
QApplication a(argc, argv);
MyDialog w;
int ret = w.exec();
return a.exec();
}
您可以通过动画的QObject
定义的任何Property
,其他一切都玩不同的动画和持续时间
编辑:适用于使用QDialog::exec()
,在Qt4.8.5,VS2008,Win7Professionalx64 欢呼
注意测试,即改变windowOpacity财产不能在所有平台上工作。 – vahancho 2015-03-13 12:24:47
相关知识,谢谢 – Zaiborg 2015-03-13 12:44:58
如果我调用dialog-> exec(),show()不起作用。 – Nya 2015-03-13 12:48:44