赞
踩
C++ Qt是一个基于C++语言的跨平台应用程序开发框架,具有丰富的UI组件和API库。Qt包括了许多模块,如Qt Core、Qt GUI、Qt Network等,每个模块都提供了一系列的类和函数。Qt还提供了集成开发环境(IDE)Qt Creator,使得开发人员可以通过它来创建、编译、调试和部署Qt应用程序。
学习Qt开发不知道做什么?我为大家整理的这些领域都涉及到Qt开发:嵌入式领域、桌面端开发、移动端、微控制器MCU、客户端(游戏、直播等等)、汽车领域行业、 消费类电子设备、医疗领域行业、工业自动化领域等等
Qt框架,GUI应用程序,跨平台开发,信号与槽机制,QML语言,模型视图编程,多线程编程,数据库编程,网络编程,XML解析,JSON解析,图形图像处理,用户界面设计,动画效果,OpenGL,WebKit,嵌入式开发,客户端/服务器应用程序.自定义控件QT6,C++语言基础,qt基础编程,qt软件开发,Qt架构设计,qt布局管理器,qt嵌入式开发,qt编程入门,qt数据库编程,qt跨平台框架,QT项目实战,Quick模块,OpenCV,Qt实战,OpenCV教程,QT界面开发,Qt框架,C++数据结构,Qt线程,桌面应用开发,qt桌面应用开发,Socket网络编程,qt开发工程师,qt开发,应用程序开发框架,图形视图框架,数据库编程,Qt开发编程,Qt开发控件,Qt开发工程师,QT开发必备技能栈,qt编码,qt网络编程,qt网络通信,Qt信号,Qt槽机制,qt字符串,qt数据类型,qt容器,qt客户端开发,qt软件工程师,qt页面绘制
本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓
代码之路
- #include "AnimationTest.h"
- #include <QLabel>
- #include <QPushButton>
- #include <QHBoxLayout>
- #include <QVBoxLayout>
- #include <QPainter>
- #include <QDebug>
- #define CORNER_WIDTH 20 // 拐角边框宽度;
- #define CORNER_HEIGHT 6 // 拐角边框高度;
- AnimationTest::AnimationTest(QWidget *parent)
- : QWidget(parent)
- {
- initTopWidget();
- this->setWindowIcon(QIcon(":/AnimationTest/Resources/icon.jpg"));
- this->setProperty("cornerOpacity", 0.0);
- this->setWindowFlags(Qt::FramelessWindowHint);
- this->setStyleSheet("QWidget{background:white;} \
- QPushButton{background:rgb(14, 150, 254);border:none;color:white;font-size:18px;font-weight:bold;}\
- QPushButton:hover{background:rgb(44, 137, 255);}\
- QPushButton:pressed{background:rgb(14, 135, 228);padding-top:3px;padding-left:3px;}\
- ");
- this->setFixedSize(QSize(370, 370));
- }
- // 初始化顶层Widget;
- void AnimationTest::initTopWidget()
- {
- m_backWidget = new QLabel(this);
- m_backWidget->setObjectName("BackWidget");
- m_backWidget->setFixedSize(QSize(350, 350));
- m_backWidget->setPixmap(QPixmap(":/AnimationTest/Resources/backImage.jpg").scaled(m_backWidget->width(), m_backWidget->height()));
- m_topWidget = new QWidget(m_backWidget);
- m_topWidget->setFixedSize(QSize(350, 350));
- m_topWidget->move(QPoint(-m_topWidget->width(), 0));
- m_moveAnimation = new QPropertyAnimation(m_topWidget, "pos");
- m_moveAnimation->setDuration(300);
- m_moveAnimation->setStartValue(QPoint(-m_topWidget->width(), 0));
- m_moveAnimation->setEndValue(QPoint(0, 0));
- m_opcityAnimation = new QPropertyAnimation(this, "cornerOpacity");
- m_opcityAnimation->setDuration(300);
- m_opcityAnimation->setStartValue(0);
- m_opcityAnimation->setEndValue(1.0);
- connect(m_opcityAnimation, SIGNAL(valueChanged(const QVariant&)), this, SLOT(update()));
- QLabel* topWidgetInfo = new QLabel;
- topWidgetInfo->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
- topWidgetInfo->setPixmap(QPixmap(":/AnimationTest/Resources/labelInfo.png"));
- QPushButton* pButtonPreview = new QPushButton(QStringLiteral("预览"));
- pButtonPreview->setFixedSize(QSize(100, 50));
- QPushButton* pButtonDownloadJPG = new QPushButton(QStringLiteral("下载JPG"));
- pButtonDownloadJPG->setFixedSize(QSize(100, 50));
- QPushButton* pButtonDownloadPNG = new QPushButton(QStringLiteral("下载PNG"));
- pButtonDownloadPNG->setFixedSize(QSize(100, 50));
- QHBoxLayout* hLayoutLabel = new QHBoxLayout;
- hLayoutLabel->addStretch();
- hLayoutLabel->addWidget(topWidgetInfo);
- hLayoutLabel->addStretch();
- hLayoutLabel->setMargin(0);
- QHBoxLayout* hLayoutButton = new QHBoxLayout;
- hLayoutButton->addStretch();
- hLayoutButton->addWidget(pButtonPreview);
- hLayoutButton->addWidget(pButtonDownloadJPG);
- hLayoutButton->addWidget(pButtonDownloadPNG);
- hLayoutButton->addStretch();
- hLayoutButton->setSpacing(6);
- hLayoutButton->setMargin(0);
- QVBoxLayout* vLayout = new QVBoxLayout(m_topWidget);
- vLayout->addLayout(hLayoutLabel);
- vLayout->addLayout(hLayoutButton);
- vLayout->setMargin(0);
- vLayout->setSpacing(0);
- QHBoxLayout* mainLayout = new QHBoxLayout(this);
- mainLayout->addWidget(m_backWidget);
- mainLayout->setMargin(10);
- }
- // 进入离开事件;
- // 主要进行动画的操作;
- void AnimationTest::leaveEvent(QEvent *event)
- {
- m_moveAnimation->setStartValue(QPoint(0, 0));
- m_moveAnimation->setEndValue(QPoint(m_topWidget->width(), 0));
- // 注掉以上两行代码使用下面代码则收缩往相反方向;
- // 使用以上两行代码则窗口收缩往相同方向;
- // m_moveAnimation->setDirection(QAbstractAnimation::Backward);
- m_moveAnimation->start();
- m_opcityAnimation->setDirection(QAbstractAnimation::Backward);
- m_opcityAnimation->start();
- }
- void AnimationTest::enterEvent(QEvent *event)
- {
- m_moveAnimation->setStartValue(QPoint(-m_topWidget->width(), 0));
- m_moveAnimation->setEndValue(QPoint(0, 0));
- // 注掉以上两行代码使用下面代码则收缩往相反方向;
- // 使用以上两行代码则窗口收缩往相同方向;
- // m_moveAnimation->setDirection(QAbstractAnimation::Forward);
- m_moveAnimation->start();
- m_opcityAnimation->setDirection(QAbstractAnimation::Forward);
- m_opcityAnimation->start();
- }
- // 绘制事件,主要绘制四角的边框;
- void AnimationTest::paintEvent(QPaintEvent *event)
- {
- Q_UNUSED(event);
- QPainter painter(this);
- // 左上角;
- drawCorner(&painter, QPoint(0, 0), 0);
- // 右上角;
- drawCorner(&painter, QPoint(this->width(), 0), 90);
- // 右下角;
- drawCorner(&painter, QPoint(this->width(), this->height()), 180);
- // 左下角;
- drawCorner(&painter, QPoint(0, this->height()), -90);
- }
- // 绘制单个角的边框;
- void AnimationTest::drawCorner(QPainter* painter, QPoint pos, int translateAngle)
- {
- painter->save();
- // 通过角度,位置转换进行绘制四个角的边框;
- int transparentValue = 255 * this->property("cornerOpacity").toFloat();
- QBrush rectBrush(QColor(30, 150, 230, transparentValue));
- painter->translate(pos);
- painter->rotate(translateAngle);
- painter->fillRect(QRect(0, 0, CORNER_WIDTH, CORNER_HEIGHT), rectBrush);
- painter->fillRect(QRect(0, 0 + CORNER_HEIGHT, CORNER_HEIGHT, CORNER_WIDTH - CORNER_HEIGHT), rectBrush);
- painter->restore();
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
Qt框架,GUI应用程序,跨平台开发,信号与槽机制,QML语言,模型视图编程,多线程编程,数据库编程,网络编程,XML解析,JSON解析,图形图像处理,用户界面设计,动画效果,OpenGL,WebKit,嵌入式开发,客户端/服务器应用程序.自定义控件QT6,C++语言基础,qt基础编程,qt软件开发,Qt架构设计,qt布局管理器,qt嵌入式开发,qt编程入门,qt数据库编程,qt跨平台框架,QT项目实战,Quick模块,OpenCV,Qt实战,OpenCV教程,QT界面开发,Qt框架,C++数据结构,Qt线程,桌面应用开发,qt桌面应用开发,Socket网络编程,qt开发工程师,qt开发,应用程序开发框架,图形视图框架,数据库编程,Qt开发编程,Qt开发控件,Qt开发工程师,QT开发必备技能栈,qt编码,qt网络编程,qt网络通信,Qt信号,Qt槽机制,qt字符串,qt数据类型,qt容器,qt客户端开发,qt软件工程师,qt页面绘制
Qt框架,GUI应用程序,跨平台开发,信号与槽机制,QML语言,模型视图编程,多线程编程,数据库编程,网络编程,XML解析,JSON解析,图形图像处理,用户界面设计,动画效果,OpenGL,WebKit,嵌入式开发,客户端/服务器应用程序.自定义控件QT6,C++语言基础,qt基础编程,qt软件开发,Qt架构设计,qt布局管理器,qt嵌入式开发,qt编程入门,qt数据库编程,qt跨平台框架,QT项目实战,Quick模块,OpenCV,Qt实战,OpenCV教程,QT界面开发,Qt框架,C++数据结构,Qt线程,桌面应用开发,qt桌面应用开发,Socket网络编程,qt开发工程师,qt开发,应用程序开发框架,图形视图框架,数据库编程,Qt开发编程,Qt开发控件,Qt开发工程师,QT开发必备技能栈,qt编码,qt网络编程,qt网络通信,Qt信号,Qt槽机制,qt字符串,qt数据类型,qt容器,qt客户端开发,qt软件工程师,qt页面绘制
本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。