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

win2008 r2 搭建网站网站建设如何创建框架页面

win2008 r2 搭建网站,网站建设如何创建框架页面,网盘资源大全,wordpress开头空两格项目开发#xff0c;想实现动态的显示按钮#xff0c;考虑使用QStackedWidget做两个页面去切换。 首先#xff0c;我们使用Qt ui 画出两个QStackedWidget的两个页面 要实现切换#xff0c;我们只需要调用stackedWidget-setCurrentIndex(index)就行。 那么如何自动调…项目开发想实现动态的显示按钮考虑使用QStackedWidget做两个页面去切换。 首先我们使用Qt ui 画出两个QStackedWidget的两个页面 要实现切换我们只需要调用stackedWidget-setCurrentIndex(index)就行。 那么如何自动调用呢 这时候我们想到网页的正常操作。当鼠标在某个区悬浮超过固定时间时将按钮显示出来也就是切换页面。 这里我们遇到了个坑 Qt为了缩减资源消耗只在鼠标按下才触发mouseMoveEvent 切记修改MouseTracking属性我们修改了整个ui的MouseTracking属性发现没有用 查资料需要将所有QWidget子节点全部赋值 void setMouseTrackingRecursively(QWidget* widget) {if (widget nullptr)return;widget-setMouseTracking(true);const QObjectList children widget-children();for (QObject* child : children) {if (child-isWidgetType()) {setMouseTrackingRecursively(qobject_castQWidget*(child));}} }实现完成发现还行但是缺少点灵魂动画太直接了。 好的加动画属性#include QPropertyAnimation 这玩意太多功能了后期单独在写。 直接上代码 endListDialog.h #ifndef ENDLISTDIALOG_H #define ENDLISTDIALOG_H#include QDialog #include QDebug namespace Ui { class endListDialog; }class endListDialog : public QDialog {Q_OBJECTpublic:explicit endListDialog(QWidget *parent nullptr);~endListDialog();private slots:void onHoverTimeout(); protected:void mouseMoveEvent(QMouseEvent *event);void switchPage(int index); private:Ui::endListDialog *ui;bool isHovering;QTimer *timer; };#endif // ENDLISTDIALOG_H endListDialog.cpp #include endlistdialog.h #include ui_endlistdialog.h #include QTimer #include QMouseEvent #include QMessageBox #include QPropertyAnimation bool bshowfalse;//鼠标事件mouseMoveEvent必须按下才响应 为了实现将页面所有QWidget setMouseTracking属性赋值true void setMouseTrackingRecursively(QWidget* widget) {if (widget nullptr)return;widget-setMouseTracking(true);const QObjectList children widget-children();for (QObject* child : children) {if (child-isWidgetType()) {setMouseTrackingRecursively(qobject_castQWidget*(child));}} }//同理QWidget 透明设置 void setwindowOpacityRecursively(QWidget* widget) {if (widget nullptr)return;widget-setMouseTracking(true);const QObjectList children widget-children();for (QObject* child : children) {if (child-isWidgetType()) {setwindowOpacityRecursively(qobject_castQWidget*(child));}} }/****************************/ //切换页面实现 //入参 index 页面 这里偷懒直接写了固定的实现 //输出 /****************************/ void endListDialog::switchPage(int index) {//我的ui QStackedWidget对象是stackedWidget_18换成自己的QWidget *currentWidget ui-stackedWidget_18-currentWidget();QWidget *nextWidget ui-stackedWidget_18-widget(index);// 创建动画// 创建缩小动画QPropertyAnimation *fadeOutAnimation new QPropertyAnimation(currentWidget, geometry);fadeOutAnimation-setDuration(200);QRect originalGeometry currentWidget-geometry();QRect targetGeometry;if(index1){ //展示第二页时 将第一页缩小一点 targetGeometry QRect(originalGeometry.x() 20,originalGeometry.y() ,originalGeometry.width()-40,originalGeometry.height());}else{//展示第一页时 将第二页放大一点 targetGeometry QRect(originalGeometry.x() -20,originalGeometry.y() ,originalGeometry.width()40,originalGeometry.height());}fadeOutAnimation-setStartValue(originalGeometry);fadeOutAnimation-setEndValue(targetGeometry);QPropertyAnimation *fadeInAnimation new QPropertyAnimation(nextWidget, windowOpacity);fadeInAnimation-setDuration(600);fadeInAnimation-setStartValue(0.0);fadeInAnimation-setEndValue(1.0);// 连接动画完成信号connect(fadeOutAnimation, QPropertyAnimation::finished, this, [this, index]() {ui-stackedWidget_18-setCurrentIndex(index);});// 启动动画fadeOutAnimation-start();fadeInAnimation-start(); }endListDialog::endListDialog(QWidget *parent) :QDialog(parent),ui(new Ui::endListDialog) {ui-setupUi(this);isHovering false;timer new QTimer();timer-setInterval(200); // 设置为 600 m秒connect(timer, QTimer::timeout, this, endListDialog::onHoverTimeout);setMouseTrackingRecursively(ui-widget);setwindowOpacityRecursively(ui-widget); }endListDialog::~endListDialog() {delete ui; }//mouseMoveEvent的重写 千万记住setMouseTracking属性赋值true //不然你只能按住才能触发 Qt为了缩减资源消耗默认赋值false void endListDialog::mouseMoveEvent(QMouseEvent *event) {// 检查鼠标是否在 stackedWidget 内if (ui-stackedWidget_18-underMouse()) {// 鼠标在 stackedWidget 内部qDebug(Mouse is inside the stackedWidget);if (!isHovering) { // 仅在未悬浮时启动计时器isHovering true;bshowfalse;timer-start();}} else {// 鼠标不在 stackedWidget 内部qDebug(Mouse is outside the stackedWidget);if (isHovering) { // 仅在悬浮时停止计时器isHovering false;timer-stop();switchPage(0);}}// 调用基类的 mouseMoveEventQDialog::mouseMoveEvent(event); }void endListDialog::onHoverTimeout() {// 在这里执行悬浮超过3秒后的操作// 例如显示提示信息// QMessageBox::information(this, 提示, 鼠标悬浮超过3秒);if(!bshow){switchPage(1);bshow true;} }
http://www.tj-hxxt.cn/news/137934.html

相关文章:

  • 公司网站建设哪家好成都兼职建设网站
  • 清河做网站哪里便宜网络规划与设计报告总结
  • 网站建设需具备的条件学校网站logo怎么做
  • 新乡市网站建设电脑培训班宁波seo外包
  • 校本教研网站建设方案热 综合-网站正在建设中
  • 如何检测网站被搜索引擎惩罚了asp.net网站配置文件
  • 宜家有做自己的网站吗什么是网站快照
  • 利于seo的网站设计哪个网站可以做房产信息群发
  • 南沙网站建设公司营销公司网站模板下载
  • 宜兴做网站哪家好搜狐快站建设pc网站
  • 如何确定网站建设空间门户网站建设采购
  • 程序员是不是都是做网站的网站建设制作设计珠海
  • 河南省建设网站桂林漓江阳朔
  • 房地产网站系统wordpress 获取附件链接
  • 手机网站建设的优势免费ppt
  • 临沂龙文网站建设网站建设策划书事物选题
  • 西安网站建设价格低学校部门网站建设总结
  • dw 怎么做钓鱼网站网站建设终身不用维护
  • 谁家做电商商城网站便宜个人网站案例
  • 赣州房产网站建设win优化大师有免费版吗
  • 一站式网站重庆招投标交易信息网
  • 英文版企业网站布局设计推荐网站空间购买
  • dede做招聘网站建设第二个北京在哪里
  • 南郑县城乡建设局网站济南公司做网站
  • 广州专业制作网站站长之家网址查询
  • 怎样使用网站后台的模板管理企业
  • 一家专门做软件的网站拜师做网站
  • 如何不让百度收录网站wordpress时间云储存
  • 自己做的网站能赚钱吗邀约网站怎么做请柬
  • 网站如何做微信支付天津seo关键词排名优化