当前位置: 首页 > news >正文

咸鱼网站做链接建筑工程网站定制

咸鱼网站做链接,建筑工程网站定制,铁岭免费移动网站建设,php网站开发学校1.效果图 2.实现原理 这里做了两个widget#xff0c;一个是 展示底图widget#xff0c;一个是 展示动画widget。 这两个widget需要重合。动画widget需要设置属性叠加到底图widget上面#xff0c;设置如下属性#xff1a; setWindowFlags(Qt::FramelessWindowHint | Qt::…1.效果图 2.实现原理 这里做了两个widget一个是 展示底图widget一个是 展示动画widget。 这两个widget需要重合。动画widget需要设置属性叠加到底图widget上面设置如下属性 setWindowFlags(Qt::FramelessWindowHint | Qt::SubWindow | Qt::WindowStaysOnTopHint); 动画widget背景需要做成透明我在上面放了一个QFrame然后设置style QFrame#frame {background-color: rgba(255, 255, 255, 100); } 动画widget上面放了一个QStackedWidget。一个用于显示 的图像另一个则显示菜单。 动画效果QPropertyAnimation类提供动画支持改变geometry属性。 m_slideOutAnimation new QPropertyAnimation(this,geometry);connect(m_slideOutAnimation,QPropertyAnimation::finished,this,SlideAnimationWidget::slotSlideOutFinished);m_slideOutAnimation-setEasingCurve(QEasingCurve::OutSine);m_slideOutAnimation-setDuration(1300);m_slideInAnimation new QPropertyAnimation(this,geometry);connect(m_slideInAnimation,QPropertyAnimation::finished,this,SlideAnimationWidget::slotSlideInFinished);m_slideInAnimation-setEasingCurve(QEasingCurve::InSine);m_slideInAnimation-setDuration(1300);最后安装事件过滤器通过鼠标进入和离开事件触发动画效果。 ui-label-installEventFilter(this);ui-controlWidget-installEventFilter(this); 3.源码 #ifndef SLIDEANIMATIONWIDGET_H #define SLIDEANIMATIONWIDGET_H#include QWidget #include QPropertyAnimation #include QEvent #include QRectnamespace Ui { class SlideAnimationWidget; }#define SLIDE_MIN_WIDTH 10 //侧边栏滑出最小的宽度 #define SLIDE_MAX_WIDTH 300 //侧边栏滑出最大的宽度class SlideAnimationWidget : public QWidget {Q_OBJECTpublic:explicit SlideAnimationWidget(QWidget *parent 0);~SlideAnimationWidget();public:void setPos(int x,int y);protected:bool eventFilter(QObject *obj, QEvent *event);private slots:void slotSlideOutFinished();void slotSlideInFinished();private:Ui::SlideAnimationWidget *ui;private:QPropertyAnimation *m_slideOutAnimation nullptr;QPropertyAnimation *m_slideInAnimation nullptr;bool m_bShowSideflag false; //显示侧边栏bool m_bInComboBox false;int m_posX 0;int m_posY 0;bool m_isInit false; };#endif // SLIDEANIMATIONWIDGET_H#include SlideAnimationWidget.h #include ui_SlideAnimationWidget.h #include QAbstractItemView #include QListView #include QMouseEventSlideAnimationWidget::SlideAnimationWidget(QWidget *parent) :QWidget(parent),ui(new Ui::SlideAnimationWidget) {ui-setupUi(this);setWindowFlags(Qt::FramelessWindowHint | Qt::SubWindow | Qt::WindowStaysOnTopHint);m_slideOutAnimation new QPropertyAnimation(this,geometry);connect(m_slideOutAnimation,QPropertyAnimation::finished,this,SlideAnimationWidget::slotSlideOutFinished);m_slideOutAnimation-setEasingCurve(QEasingCurve::OutSine);m_slideOutAnimation-setDuration(1300);m_slideInAnimation new QPropertyAnimation(this,geometry);connect(m_slideInAnimation,QPropertyAnimation::finished,this,SlideAnimationWidget::slotSlideInFinished);m_slideInAnimation-setEasingCurve(QEasingCurve::InSine);m_slideInAnimation-setDuration(1300);ui-stackedWidget-setCurrentIndex(0);ui-label-installEventFilter(this);ui-controlWidget-installEventFilter(this);ui-cbxFocusMode-view()-installEventFilter(this);ui-cbxField-view()-installEventFilter(this);ui-cbxFocusStep-view()-installEventFilter(this);this-setMaximumWidth(SLIDE_MIN_WIDTH);}SlideAnimationWidget::~SlideAnimationWidget() {delete ui; }void SlideAnimationWidget::setPos(int x, int y) {m_posX x;m_posY y;move(x,y); }bool SlideAnimationWidget::eventFilter(QObject *obj, QEvent *event) {if(obj ui-cbxFocusMode-view() ||obj ui-cbxField-view() ||obj ui-cbxFocusStep-view()){if (event-type() QEvent::FocusIn){m_bInComboBox true;}else if (event-type() QEvent::FocusOut){m_bInComboBox false;}}else if(obj ui-label){//鼠标进入的时候if (event-type() QEvent::Enter ui-stackedWidget-currentIndex() 0 !m_bShowSideflag){if(m_slideOutAnimation-state() QAbstractAnimation::Running)return true;//qDebug()Enter;this-setMaximumWidth(SLIDE_MAX_WIDTH);m_slideOutAnimation-setStartValue(QRect(m_posX,m_posY,SLIDE_MIN_WIDTH,this-height()));m_slideOutAnimation-setEndValue(QRect(m_posX,m_posY,SLIDE_MAX_WIDTH,this-height()));m_slideOutAnimation-start();ui-stackedWidget-setCurrentIndex(1);m_bShowSideflag true;return true;}return false;//别的事件会传给label对象}else if(obj ui-controlWidget){//鼠标离开的时候if (event-type() QEvent::Leave ui-stackedWidget-currentIndex() 1 m_bShowSideflag !m_bInComboBox){if(m_slideInAnimation-state() QAbstractAnimation::Running)return true;//qDebug()Leave;m_slideInAnimation-setStartValue(QRect(m_posX,m_posY,SLIDE_MAX_WIDTH,this-height()));m_slideInAnimation-setEndValue(QRect(m_posX,m_posY,SLIDE_MIN_WIDTH,this-height()));m_slideInAnimation-start();m_bShowSideflag false;return true;}return false;//别的事件会传给label对象}// standard event processingreturn QWidget::eventFilter(obj, event); }void SlideAnimationWidget::slotSlideOutFinished() {}void SlideAnimationWidget::slotSlideInFinished() {this-setMaximumWidth(SLIDE_MIN_WIDTH);ui-stackedWidget-setCurrentIndex(0); }使用新建一个MainWidget将m_animationWidget父对象设置为this。 做了一个void MainWidget::resizeEvent(QResizeEvent *event)事件根据MainWidget的尺寸自适应m_animationWidget的高度。 #include MainWidget.h #include ui_MainWidget.h #include SlideAnimationWidget.h #include QDebug#define POS_X 5 #define POS_Y 26MainWidget::MainWidget(QWidget *parent) :QWidget(parent),ui(new Ui::MainWidget) {ui-setupUi(this);m_animationWidget new SlideAnimationWidget(this);m_animationWidget-setPos(POS_X,POS_Y); }MainWidget::~MainWidget() {delete ui; }void MainWidget::resizeEvent(QResizeEvent *event) {m_animationWidget-setFixedHeight(event-size().height()-POS_Y*2); }void MainWidget::showEvent(QShowEvent *event) {Q_UNUSED(event);if(m_isInit)return;setWindowState(Qt::WindowFullScreen);showMaximized();m_isInit true; } 4.相关参考 Qt 事件过滤器秒懂_qt事件过滤器-CSDN博客 Qt 事件处理机制简介_qt获取事件的发起者_Mr.codeee的博客-CSDN博客  Qt 自定义悬浮窗带动画类似QQ拼音输入法_qt 浮动窗口设置悬浮-CSDN博客
http://www.pierceye.com/news/837540/

相关文章:

  • 兰州电商平台网站建设网路神做网站怎么样
  • 诸城易讯网站建设服务中心网址的域名
  • 制作商务网站应用公园制作app软件下载
  • 情头定制网站被称为网站开发神器
  • 宝安网站设计案例淘宝页面制作
  • 天津品牌网站制作怎样建设网站流程
  • 怎样进行公司网站建设wordpress主题公司
  • 外宣做网站宣传网站功能描述
  • 部队网站建设多少钱营销自己的网站
  • 长春市城乡建设部网站南昌诚推网络技术有限公司
  • 网站 建设 欢迎你濮阳家电网站建设
  • 怎么快速建立一个网站如何用腾讯云服务器搭建wordpress
  • 五屏网站建设多少钱深圳网站公司有哪些
  • 莆田网站建站wordpress cd
  • 软件下载安装免费南京seo关键词优化服务
  • 广州网站设计软件建设将网站加入受信网站再试
  • 淘宝联盟网站备案常见的互联网应用
  • 自己做网站 搜索功能开发企业综合信息服务平台
  • 意大利语网站建设wordpress主题首页显示不全
  • 模板网站免费下载wordpress启用静态
  • 保定网站建设哪家好网站建设实践报告3000字
  • 网站制作项目执行免费制作微网站
  • 西安网站制作费用网站建设小程序开发报价
  • 深圳做针织衫服装的网站软件开发工具手机版
  • 网站域名注册的相关证书证明文件最珠海app
  • 网站规划建设与管理维护大学论文免费个人搭建网站
  • 网站解析时候让做别名企业密信app下载安装
  • 直播网站建设模板网站中文商标域名注册
  • 商务网站建设与管理读后感为什么公司要做网站
  • 高密 网站建设wordpress设置置顶文章