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