├── QtAnimationDemo.pro ├── QtAnimationDemo.pro.user ├── main.cpp ├── mainwindow.cpp ├── mainwindow.h └── mainwindow.ui /QtAnimationDemo.pro: -------------------------------------------------------------------------------- 1 | #------------------------------------------------- 2 | # 3 | # Project created by QtCreator 2017-08-10T19:37:29 4 | # 5 | #------------------------------------------------- 6 | 7 | QT += core gui 8 | 9 | greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 10 | 11 | TARGET = QtAnimationDemo 12 | TEMPLATE = app 13 | 14 | # The following define makes your compiler emit warnings if you use 15 | # any feature of Qt which as been marked as deprecated (the exact warnings 16 | # depend on your compiler). Please consult the documentation of the 17 | # deprecated API in order to know how to port your code away from it. 18 | DEFINES += QT_DEPRECATED_WARNINGS 19 | 20 | # You can also make your code fail to compile if you use deprecated APIs. 21 | # In order to do so, uncomment the following line. 22 | # You can also select to disable deprecated APIs only up to a certain version of Qt. 23 | #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 24 | 25 | 26 | SOURCES += main.cpp\ 27 | mainwindow.cpp 28 | 29 | HEADERS += mainwindow.h 30 | 31 | FORMS += mainwindow.ui 32 | -------------------------------------------------------------------------------- /QtAnimationDemo.pro.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | EnvironmentId 7 | {fa6b55a0-ad3c-42b4-b187-72760eef9ba0} 8 | 9 | 10 | ProjectExplorer.Project.ActiveTarget 11 | 0 12 | 13 | 14 | ProjectExplorer.Project.EditorSettings 15 | 16 | true 17 | false 18 | true 19 | 20 | Cpp 21 | 22 | CppGlobal 23 | 24 | 25 | 26 | QmlJS 27 | 28 | QmlJSGlobal 29 | 30 | 31 | 2 32 | UTF-8 33 | false 34 | 4 35 | false 36 | 80 37 | true 38 | true 39 | 1 40 | true 41 | false 42 | 0 43 | true 44 | true 45 | 0 46 | 8 47 | true 48 | 1 49 | true 50 | true 51 | true 52 | false 53 | 54 | 55 | 56 | ProjectExplorer.Project.PluginSettings 57 | 58 | 59 | 60 | ProjectExplorer.Project.Target.0 61 | 62 | Desktop Qt 5.7.1 MinGW 32bit 63 | Desktop Qt 5.7.1 MinGW 32bit 64 | qt.57.win32_mingw53_kit 65 | 0 66 | 0 67 | 0 68 | 69 | E:/QtProject/build-QtAnimationDemo-Desktop_Qt_5_7_1_MinGW_32bit-Debug 70 | 71 | 72 | true 73 | qmake 74 | 75 | QtProjectManager.QMakeBuildStep 76 | true 77 | 78 | false 79 | false 80 | false 81 | 82 | 83 | true 84 | Make 85 | 86 | Qt4ProjectManager.MakeStep 87 | 88 | false 89 | 90 | 91 | 92 | 2 93 | 构建 94 | 95 | ProjectExplorer.BuildSteps.Build 96 | 97 | 98 | 99 | true 100 | Make 101 | 102 | Qt4ProjectManager.MakeStep 103 | 104 | true 105 | clean 106 | 107 | 108 | 1 109 | 清理 110 | 111 | ProjectExplorer.BuildSteps.Clean 112 | 113 | 2 114 | false 115 | 116 | Debug 117 | 118 | Qt4ProjectManager.Qt4BuildConfiguration 119 | 2 120 | true 121 | 122 | 123 | E:/QtProject/build-QtAnimationDemo-Desktop_Qt_5_7_1_MinGW_32bit-Release 124 | 125 | 126 | true 127 | qmake 128 | 129 | QtProjectManager.QMakeBuildStep 130 | false 131 | 132 | false 133 | false 134 | false 135 | 136 | 137 | true 138 | Make 139 | 140 | Qt4ProjectManager.MakeStep 141 | 142 | false 143 | 144 | 145 | 146 | 2 147 | 构建 148 | 149 | ProjectExplorer.BuildSteps.Build 150 | 151 | 152 | 153 | true 154 | Make 155 | 156 | Qt4ProjectManager.MakeStep 157 | 158 | true 159 | clean 160 | 161 | 162 | 1 163 | 清理 164 | 165 | ProjectExplorer.BuildSteps.Clean 166 | 167 | 2 168 | false 169 | 170 | Release 171 | 172 | Qt4ProjectManager.Qt4BuildConfiguration 173 | 0 174 | true 175 | 176 | 177 | E:/QtProject/build-QtAnimationDemo-Desktop_Qt_5_7_1_MinGW_32bit-Profile 178 | 179 | 180 | true 181 | qmake 182 | 183 | QtProjectManager.QMakeBuildStep 184 | true 185 | 186 | false 187 | true 188 | false 189 | 190 | 191 | true 192 | Make 193 | 194 | Qt4ProjectManager.MakeStep 195 | 196 | false 197 | 198 | 199 | 200 | 2 201 | 构建 202 | 203 | ProjectExplorer.BuildSteps.Build 204 | 205 | 206 | 207 | true 208 | Make 209 | 210 | Qt4ProjectManager.MakeStep 211 | 212 | true 213 | clean 214 | 215 | 216 | 1 217 | 清理 218 | 219 | ProjectExplorer.BuildSteps.Clean 220 | 221 | 2 222 | false 223 | 224 | Profile 225 | 226 | Qt4ProjectManager.Qt4BuildConfiguration 227 | 0 228 | true 229 | 230 | 3 231 | 232 | 233 | 0 234 | 部署 235 | 236 | ProjectExplorer.BuildSteps.Deploy 237 | 238 | 1 239 | 在本地部署 240 | 241 | ProjectExplorer.DefaultDeployConfiguration 242 | 243 | 1 244 | 245 | 246 | false 247 | false 248 | 1000 249 | 250 | true 251 | 252 | false 253 | false 254 | false 255 | false 256 | true 257 | 0.01 258 | 10 259 | true 260 | 1 261 | 25 262 | 263 | 1 264 | true 265 | false 266 | true 267 | valgrind 268 | 269 | 0 270 | 1 271 | 2 272 | 3 273 | 4 274 | 5 275 | 6 276 | 7 277 | 8 278 | 9 279 | 10 280 | 11 281 | 12 282 | 13 283 | 14 284 | 285 | 2 286 | 287 | QtAnimationDemo 288 | 289 | Qt4ProjectManager.Qt4RunConfiguration:E:/QtProject/QtAnimationDemo/QtAnimationDemo.pro 290 | true 291 | 292 | QtAnimationDemo.pro 293 | false 294 | 295 | 296 | 3768 297 | false 298 | true 299 | false 300 | false 301 | true 302 | 303 | 1 304 | 305 | 306 | 307 | ProjectExplorer.Project.TargetCount 308 | 1 309 | 310 | 311 | ProjectExplorer.Project.Updater.FileVersion 312 | 18 313 | 314 | 315 | Version 316 | 18 317 | 318 | 319 | -------------------------------------------------------------------------------- /main.cpp: -------------------------------------------------------------------------------- 1 | #include "mainwindow.h" 2 | #include 3 | 4 | int main(int argc, char *argv[]) 5 | { 6 | QApplication a(argc, argv); 7 | MainWindow w; 8 | w.show(); 9 | 10 | return a.exec(); 11 | } 12 | -------------------------------------------------------------------------------- /mainwindow.cpp: -------------------------------------------------------------------------------- 1 | #include "mainwindow.h" 2 | #include "ui_mainwindow.h" 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | MainWindow::MainWindow(QWidget *parent) : 9 | QMainWindow(parent), 10 | ui(new Ui::MainWindow) 11 | { 12 | ui->setupUi(this); 13 | 14 | //scale 15 | QPropertyAnimation *pScaleAnimation1 = new QPropertyAnimation(ui->scaleButton, "geometry"); 16 | pScaleAnimation1->setDuration(1000); 17 | pScaleAnimation1->setStartValue(QRect(190, 230, 0, 0)); 18 | pScaleAnimation1->setEndValue(QRect(120, 160, 140, 140)); 19 | pScaleAnimation1->setEasingCurve(QEasingCurve::InOutQuad); 20 | 21 | QPropertyAnimation *pScaleAnimation2 = new QPropertyAnimation(ui->scaleButton, "geometry"); 22 | pScaleAnimation2->setDuration(1000); 23 | pScaleAnimation2->setStartValue(QRect(120, 160, 140, 140)); 24 | pScaleAnimation2->setEndValue(QRect(190, 230, 0, 0)); 25 | pScaleAnimation2->setEasingCurve(QEasingCurve::InOutQuad); 26 | 27 | QSequentialAnimationGroup *pScaleGroup = new QSequentialAnimationGroup(this); 28 | pScaleGroup->addAnimation(pScaleAnimation1); 29 | pScaleGroup->addAnimation(pScaleAnimation2); 30 | 31 | //pos 32 | QPropertyAnimation *pPosAnimation1 = new QPropertyAnimation(ui->posButton, "pos"); 33 | pPosAnimation1->setDuration(1000); 34 | pPosAnimation1->setStartValue(QPoint(360, 160)); 35 | pPosAnimation1->setEndValue(QPoint(360, 350)); 36 | pPosAnimation1->setEasingCurve(QEasingCurve::InOutQuad); 37 | 38 | // QPropertyAnimation *pPosAnimation2 = new QPropertyAnimation(ui->posButton, "pos"); 39 | // pPosAnimation2->setDuration(1000); 40 | // pPosAnimation2->setStartValue(QPoint(360, 350)); 41 | // pPosAnimation2->setEndValue(QPoint(360, 160)); 42 | // pPosAnimation2->setEasingCurve(QEasingCurve::InOutQuad); 43 | 44 | QSequentialAnimationGroup *pPosGroup = new QSequentialAnimationGroup(this); 45 | pPosGroup->addPause(500); 46 | pPosGroup->addAnimation(pPosAnimation1); 47 | // pPosGroup->addAnimation(pPosAnimation2); 48 | 49 | //opacity 50 | QGraphicsOpacityEffect *pButtonOpacity = new QGraphicsOpacityEffect(this); 51 | pButtonOpacity->setOpacity(1); 52 | ui->opasityButton->setGraphicsEffect(pButtonOpacity); 53 | 54 | QPropertyAnimation *pOpacityAnimation1 = new QPropertyAnimation(pButtonOpacity, "opacity"); 55 | pOpacityAnimation1->setDuration(1000); 56 | pOpacityAnimation1->setStartValue(1); 57 | pOpacityAnimation1->setEndValue(0); 58 | 59 | QPropertyAnimation *pOpacityAnimation2 = new QPropertyAnimation(pButtonOpacity, "opacity"); 60 | pOpacityAnimation2->setDuration(1000); 61 | pOpacityAnimation2->setStartValue(0); 62 | pOpacityAnimation2->setEndValue(1); 63 | 64 | QSequentialAnimationGroup *pOpacityGroup = new QSequentialAnimationGroup(this); 65 | pOpacityGroup->addPause(1000); 66 | pOpacityGroup->addAnimation(pOpacityAnimation1); 67 | pOpacityGroup->addAnimation(pOpacityAnimation2); 68 | 69 | m_group = new QParallelAnimationGroup(this); 70 | m_group->addAnimation(pScaleGroup); 71 | m_group->addAnimation(pPosGroup); 72 | m_group->addAnimation(pOpacityGroup); 73 | } 74 | 75 | MainWindow::~MainWindow() 76 | { 77 | delete ui; 78 | } 79 | 80 | void MainWindow::on_startButton_clicked() 81 | { 82 | m_group->setDirection(QAbstractAnimation::Forward); 83 | m_group->setLoopCount(1); 84 | m_group->start(); 85 | } 86 | 87 | void MainWindow::on_startButton_3_clicked() 88 | { 89 | m_group->setDirection(QAbstractAnimation::Backward); 90 | m_group->setLoopCount(1); 91 | m_group->start(); 92 | } 93 | 94 | void MainWindow::on_startButton_2_clicked() 95 | { 96 | m_group->setDirection(QAbstractAnimation::Forward); 97 | m_group->setLoopCount(-1); 98 | m_group->start(); 99 | } 100 | 101 | 102 | -------------------------------------------------------------------------------- /mainwindow.h: -------------------------------------------------------------------------------- 1 | #ifndef MAINWINDOW_H 2 | #define MAINWINDOW_H 3 | 4 | #include 5 | #include 6 | 7 | namespace Ui { 8 | class MainWindow; 9 | } 10 | 11 | class MainWindow : public QMainWindow 12 | { 13 | Q_OBJECT 14 | 15 | public: 16 | explicit MainWindow(QWidget *parent = 0); 17 | ~MainWindow(); 18 | 19 | private slots: 20 | void on_startButton_clicked(); 21 | 22 | void on_startButton_2_clicked(); 23 | 24 | void on_startButton_3_clicked(); 25 | 26 | private: 27 | Ui::MainWindow *ui; 28 | QParallelAnimationGroup *m_group; 29 | }; 30 | 31 | #endif // MAINWINDOW_H 32 | -------------------------------------------------------------------------------- /mainwindow.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWindow 4 | 5 | 6 | 7 | 0 8 | 0 9 | 836 10 | 504 11 | 12 | 13 | 14 | MainWindow 15 | 16 | 17 | 18 | 19 | 20 | 120 21 | 160 22 | 140 23 | 140 24 | 25 | 26 | 27 | 28 | 12 29 | 30 | 31 | 32 | background-color: rgb(146, 110, 255); 33 | border:none; 34 | 35 | 36 | scale 37 | 38 | 39 | 40 | 41 | 42 | 360 43 | 160 44 | 140 45 | 140 46 | 47 | 48 | 49 | 50 | 12 51 | 52 | 53 | 54 | background-color: rgb(164, 211, 255); 55 | border:none; 56 | 57 | 58 | pos 59 | 60 | 61 | 62 | 63 | 64 | 600 65 | 160 66 | 140 67 | 140 68 | 69 | 70 | 71 | 72 | 12 73 | 74 | 75 | 76 | background-color: rgb(65, 52, 37); 77 | border:none; 78 | 79 | 80 | opacity 81 | 82 | 83 | 84 | 85 | 86 | 260 87 | 70 88 | 80 89 | 40 90 | 91 | 92 | 93 | 94 | 黑体 95 | 20 96 | 97 | 98 | 99 | 100 | 101 | 102 | start 103 | 104 | 105 | 106 | 107 | 108 | 500 109 | 70 110 | 80 111 | 40 112 | 113 | 114 | 115 | 116 | 黑体 117 | 20 118 | 119 | 120 | 121 | 122 | 123 | 124 | loop 125 | 126 | 127 | 128 | 129 | 130 | 370 131 | 70 132 | 100 133 | 40 134 | 135 | 136 | 137 | 138 | 黑体 139 | 20 140 | PreferDefault 141 | 142 | 143 | 144 | 145 | 146 | 147 | back 148 | 149 | 150 | 151 | 152 | 153 | 154 | 0 155 | 0 156 | 836 157 | 23 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | --------------------------------------------------------------------------------