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

做汽车团购网站百度官网平台

做汽车团购网站,百度官网平台,彬县网吧,辽宁省建设工程信息网如何传业绩这篇文章主要介绍了Qt实现界面滑动切换效果#xff0c;对大家的学习或工作具有一定的参考借鉴价值#xff0c;需要的朋友可以参考下。 一、简述 一个基于Qt的动态滑动页面组件。 二、 设计思路 1、自定义StackWidget类#xff0c;继承自QWidget#xff0c;实现一个堆叠…        这篇文章主要介绍了Qt实现界面滑动切换效果对大家的学习或工作具有一定的参考借鉴价值需要的朋友可以参考下。 一、简述 一个基于Qt的动态滑动页面组件。  二、 设计思路 1、自定义StackWidget类继承自QWidget实现一个堆叠的窗口组件可以在其中放置多个子窗口只显示当前活动窗口。 2、使用QPropertyAnimation来设置界面切换动画。 三、效果  四、核心代码   1、头文件astackwidget.h #include QWidgetclass QPropertyAnimation; class AStackWidget : public QWidget {Q_OBJECT public:AStackWidget(QWidget *parent);~AStackWidget();public:int count() const;int currentIndex() const;int addWidget(QWidget *widget);int indexOf(QWidget *widget) const;int insertWidget(int index, QWidget *widget);QWidget *currentWidget() const;QWidget *widget(int index) const;void removeWidget(QWidget *widget);void setDuration(int duration);signals:void currentChanged(int index);void widgetRemoved(int index);public slots:void setCurrentIndex(int index);void setCurrentWidget(QWidget *widget);private slots:void onValueChanged(const QVariant );void onMoveFinished();private:void moveAnimationStart();void setWidgetsVisible();protected:void resizeEvent(QResizeEvent *event);private:int m_offset;int m_curIndex;int m_lastIndex;int m_duration;QPropertyAnimation *m_moveAnimation;QListQWidget * m_widgetLst; };2、实现代码astackwidget.cpp #include astackwidget.h #include QPropertyAnimationAStackWidget::AStackWidget(QWidget *parent): QWidget(parent) {m_offset 0;m_curIndex 0;m_lastIndex 0;m_duration 500;m_moveAnimation new QPropertyAnimation(this, );m_moveAnimation-setDuration(m_duration);connect(m_moveAnimation, QPropertyAnimation::valueChanged, this, AStackWidget::onValueChanged);connect(m_moveAnimation, QPropertyAnimation::finished, this, AStackWidget::onMoveFinished); }AStackWidget::~AStackWidget() {}int AStackWidget::count() const {return m_widgetLst.size(); }int AStackWidget::currentIndex() const {return m_curIndex; }void AStackWidget::setDuration(int duration) {m_duration duration; }int AStackWidget::addWidget(QWidget * widget) {int index indexOf(widget);if (index 0){return index;}widget-setParent(this);m_widgetLst.append(widget);return count() - 1; }int AStackWidget::indexOf(QWidget * widget) const {return m_widgetLst.indexOf(widget); }int AStackWidget::insertWidget(int index, QWidget * widget) {int curindex indexOf(widget);if (curindex 0) {return curindex;}widget-setParent(this);m_widgetLst.insert(index, widget);return index; }QWidget * AStackWidget::currentWidget() const {if (m_curIndex 0 m_curIndex count()){return m_widgetLst.at(m_curIndex);}return 0; }QWidget * AStackWidget::widget(int index) const {if (index 0 index count()) {return m_widgetLst.at(index);}return 0; }void AStackWidget::removeWidget(QWidget * widget) {int index indexOf(widget);if (index 0) {m_widgetLst.removeAll(widget);emit widgetRemoved(index);} }void AStackWidget::setCurrentWidget(QWidget * widget) {int index indexOf(widget);if (index 0 m_curIndex ! index) {setCurrentIndex(index);} }void AStackWidget::setCurrentIndex(int index) {if (index 0 m_curIndex ! index) {m_lastIndex m_curIndex;m_curIndex index; moveAnimationStart();emit currentChanged(index);} }void AStackWidget::resizeEvent(QResizeEvent *event) {QWidget::resizeEvent(event);int size count();for (int i 0; i size; i) {m_widgetLst.at(i)-resize(this-width(), this-height());}if (m_moveAnimation-state() QAbstractAnimation::Running) {moveAnimationStart();}else {setWidgetsVisible();onValueChanged(0);} }void AStackWidget::onValueChanged(const QVariant value) {m_offset value.toInt();m_widgetLst.at(m_curIndex)-move(m_offset, 0);if (m_curIndex m_lastIndex) {m_widgetLst.at(m_lastIndex)-move(m_offset - this-width(), 0);} else if (m_curIndex m_lastIndex){m_widgetLst.at(m_lastIndex)-move(this-width() m_offset, 0);} }void AStackWidget::moveAnimationStart() {m_moveAnimation-stop();setWidgetsVisible();int startOffset m_offset;if (m_curIndex m_lastIndex) {if (startOffset 0) startOffset this-width();else startOffset this-width() - qAbs(startOffset);}else {if (startOffset 0) startOffset -this-width();else startOffset qAbs(startOffset) - this-width();}m_moveAnimation-setDuration(qAbs(startOffset) * m_duration / this-width());m_moveAnimation-setStartValue(startOffset);m_moveAnimation-setEndValue(0);m_moveAnimation-start(); }void AStackWidget::setWidgetsVisible() {int size count();for (int i 0; i size; i) {if (m_lastIndex i || m_curIndex i)m_widgetLst.at(i)-setVisible(true);else {m_widgetLst.at(i)-setVisible(false);}} }void AStackWidget::onMoveFinished() {//可在此添加动画结束后处理代码 }QPropertyAnimation动画类如果仅控制一个界面的动画可以直接设置动画效果后start函数启动动画效果。 StackedWidget用于存储多个界面当界面需要展示的时候可以通过setCurrentIndex展示当前页面。 五、使用示例 以下是一个简单的示例代码演示了如何在Qt中实现滑动页面组件和多页面动态切换 1、实现步骤 在应用程序中创建 StackedWidget的对象将多个子组件在容器对象中布局将容器对象加入StackedWidget中生成新的页面通过StackedWidget的setCurrentIndex切换页面。 2、ui设计 frmastackwidget.ui 3、使用代码 #include FrmAStackWidget.h #include QButtonGroup #include QLabelFrmAStackWidget::FrmAStackWidget(QWidget *parent): QWidget(parent) {ui.setupUi(this);QListQString colorlst;colorlst #1abc9c;colorlst #2ecc71;colorlst #3498db;colorlst #9b59b6;colorlst #e74c3c;QListQPushButton * btnlst;btnlst ui.pushButton_1;btnlst ui.pushButton_2;btnlst ui.pushButton_3;btnlst ui.pushButton_4;btnlst ui.pushButton_5;QButtonGroup *btnGroup new QButtonGroup(this);connect(btnGroup, SIGNAL(buttonClicked(int)), ui.aStackwidget, SLOT(setCurrentIndex(int)));for (int i 0; i 5; i) {QLabel *label new QLabel(ui.aStackwidget);label-setStyleSheet(QString(background-color:%1;color:#ffffff;).arg(colorlst.at(i)));label-setText(QString::number(i 1));label-setAlignment(Qt::AlignCenter);int index ui.aStackwidget-addWidget(label);btnGroup-addButton(btnlst.at(i), index);} }这个示例只是一个基本的实现实际应用中可能需要更复杂的逻辑来处理动画效果。 望大家看完这篇文章后可以实现自己的翻页动画效果。 六、源代码下载
http://www.w-s-a.com/news/651553/

相关文章:

  • 网站增加关键字建设旅游网站的功能定位
  • 怎么搭建源码网站义乌网络
  • 定远规划建设局网站wordpress云主机安装
  • 慈溪市网站开发软件开发文档国家标准
  • 本地佛山顺德网站设计公司的网站如何建设
  • 网站建设前十名网站建设 招标书
  • 手机网站标准百度搜索关键词排名优化推广
  • 中国空间站科幻作文1000字wordpress运行库
  • 徐州做网站的wordpress可视化编辑器排行
  • 官方网站英语上海公司注册核名查询
  • 东莞网站建设推广云南昆明最新消息
  • 上网站乱码网页设计与网站建设案例教程
  • 宣讲网站建设wordpress多媒体主题
  • 如何成立网站互联网开发是做什么的
  • 网站首页的尺寸做多大网页图片排版
  • 龙岩天宫山索道多少钱河南网站排名优化哪家好
  • 北京做网站设计程序员和网站开发
  • 个人 做自媒体 建网站图片制作成视频的手机软件
  • h5 建站网站 移动端重庆潼南网站建设价格
  • 商企在线营销型网站怎么做时光网站
  • 网站建设方案论文1500竞价托管哪家便宜
  • 使用cdn的网站宣武网站建设
  • 营销型网站怎么建设企业网站Wap在线生成
  • 网站建设服务费应该做到什么科目广州网页制作服务商
  • 网站显示500错误怎么解决方法店面设计模板
  • 网站备案icp文化传媒有限公司
  • 北京企业建站模板微信公众号商城怎么制作
  • 制作网站 公司简介大型做网站的公司
  • 北京网站开发建设南昌网站小程序开发
  • 网站如何做ip签名图片宁波互联网