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

Wordpress百万数据查询多久郑州seo外包公司哪家好

Wordpress百万数据查询多久,郑州seo外包公司哪家好,厦门建筑网,小程序制作流程视频目录 0.背景 1.详细实现 思路简介 .h文件 .cpp文件 0.背景 Qt Linux;项目遇到问题,解决后特此记录 项目需要,个性化的标题栏(是个widget),在传统的三个按钮(最大化、最小化、关闭&#xf…

目录

0.背景

1.详细实现

思路简介

.h文件

.cpp文件


0.背景

Qt + Linux;项目遇到问题,解决后特此记录

项目需要,个性化的标题栏(是个widget),在传统的三个按钮(最大化、最小化、关闭)的基础上,新增了标题栏拖拽功能,有个额外要求是:拖拽标题栏的同时,让窗口变为normal状态(非最大化,也非最小化),也就是跟网页差不多的居中效果。

我希望的窗口大小效果:最大化(1920*1080);普通normal状态(1344*756);最小化(0);

我遇到的问题是:在拖拽时界面从max变为normal时,大小虽然修改为了1344*756,但如果此时我的鼠标在点击标题栏时,是在normal大小之外(如下图示意),此时变为normal后,会发现鼠标和窗体是分开的状态(按住鼠标时仍可拖动),就很怪。

排查后发现是因为【当窗口从最大化状态恢复为普通大小时,窗口的左上角位置会改变,但鼠标的全局位置保持不变】;

修改思路:在最大化状态下,记录鼠标在窗口中的相对位置比例 (xRatioyRatio);恢复普通窗口后,按相同比例计算鼠标在新窗口中的位置 (newXnewY);计算窗口的新位置 newWindowPos,使得鼠标在屏幕中的绝对位置保持不变。

修改后normal时鼠标状态如下:

修改后可以保证鼠标无论点击标题栏的何处,都是可以平滑的点击、移动,鼠标不会有点击后出现在normal窗体外的效果。详细代码见下文。

1.详细实现

思路简介

就是实现3个按钮release的事件;然后重写3个protectes函数;

.h文件

#ifndef BCI_SEEG_STEER_NEW_WIDGET_H
#define BCI_SEEG_STEER_NEW_WIDGET_H#include <QWidget>
#include <QMouseEvent>
#include <QDesktopWidget>namespace Ui {
class BCI_SEEG_Steer_New_Widget;
}class BCI_SEEG_Steer_New_Widget : public QWidget
{Q_OBJECTpublic:explicit BCI_SEEG_Steer_New_Widget(QWidget *parent = nullptr);~BCI_SEEG_Steer_New_Widget();protected:void mousePressEvent(QMouseEvent *event) override;void mouseMoveEvent(QMouseEvent *event) override;void mouseReleaseEvent(QMouseEvent *event) override;private slots:void on_btn_mini_released();void on_btn_max_released();void on_btn_close_released();private:Ui::BCI_SEEG_Steer_New_Widget *ui;bool m_isDragging = false;///<拖动标题栏QPoint m_dragPosition;
};#endif // BCI_SEEG_STEER_NEW_WIDGET_H

.cpp文件

#include "BCI_SEEG_Steer_New_Widget.h"
#include "ui_BCI_SEEG_Steer_New_Widget.h"BCI_SEEG_Steer_New_Widget::BCI_SEEG_Steer_New_Widget(QWidget *parent) :QWidget(parent),ui(new Ui::BCI_SEEG_Steer_New_Widget)
{ui->setupUi(this);setWindowFlags(Qt::FramelessWindowHint);showMaximized();//初始化时先告诉widget,是最大化的状态
}BCI_SEEG_Steer_New_Widget::~BCI_SEEG_Steer_New_Widget()
{delete ui;
}//重写鼠标按下事件
void BCI_SEEG_Steer_New_Widget::mousePressEvent(QMouseEvent *event)
{///< 判断是否点击了自定义标题栏,我的ui中标题栏名字叫【title_frame】,使用时要改成你的控件,你希望鼠标在哪个区域按下时,触发可移动的事件,就改成哪个控件的名字if (event->button() == Qt::LeftButton &&childAt(event->pos()) && childAt(event->pos())->objectName() == "title_frame"){if (isMaximized()) {// 保存鼠标在屏幕中的绝对位置QPoint globalMousePos = event->globalPos();// 保存鼠标在最大化窗口中的相对位置比例qreal xRatio = (qreal)event->pos().x() / width();qreal yRatio = (qreal)event->pos().y() / height();// 恢复普通窗口并调整大小showNormal();resize(1344, 756);ui->btn_max->setIcon(QIcon(":/img/maximize windows.svg"));// 计算鼠标在新窗口中的预期位置int newX = xRatio * width();int newY = yRatio * height();// 计算窗口应该移动到的位置,使鼠标保持在同一屏幕位置QPoint newWindowPos = globalMousePos - QPoint(newX, newY);// 确保窗口不会移出屏幕QRect screenGeometry = QApplication::desktop()->availableGeometry(this);newWindowPos.setX(qMax(screenGeometry.left(),qMin(newWindowPos.x(),screenGeometry.right() - width())));newWindowPos.setY(qMax(screenGeometry.top(),qMin(newWindowPos.y(),screenGeometry.bottom() - height())));// 移动窗口到新位置move(newWindowPos);// 更新拖动位置为鼠标在窗口中的新位置m_dragPosition = QPoint(newX, newY);}else {// 普通窗口状态下直接计算偏移m_dragPosition = event->globalPos() - frameGeometry().topLeft();}m_isDragging = true;event->accept();return;}QWidget::mousePressEvent(event);
}//重写鼠标移动事件
void BCI_SEEG_Steer_New_Widget::mouseMoveEvent(QMouseEvent *event)
{///< 处理窗口拖动if (m_isDragging && (event->buttons() & Qt::LeftButton)) {move(event->globalPos() - m_dragPosition);event->accept();return;}QWidget::mouseMoveEvent(event);
}//重写鼠标释放事件
void BCI_SEEG_Steer_New_Widget::mouseReleaseEvent(QMouseEvent *event)
{Q_UNUSED(event);m_isDragging = false;
}//点击最小化按钮
void BCI_SEEG_Steer_New_Widget::on_btn_mini_released()
{showMinimized();
}//点击最大化/normal按钮
void BCI_SEEG_Steer_New_Widget::on_btn_max_released()
{if (isMaximized()) {showNormal();this->resize(1344, 756);ui->btn_max->setIcon(QIcon(":/img/maximize windows.svg"));} else {showMaximized();this->resize(1920, 1080);ui->btn_max->setIcon(QIcon(":/img/restored windows.svg"));}
}//点击关闭按钮
void BCI_SEEG_Steer_New_Widget::on_btn_close_released()
{this->close();
}

.ui文件

ui界面代码我就不附上了,相关的只有标题栏和3个按钮而已,布局如下

--END--


文章转载自:

http://3iNQWjLf.rkfxc.cn
http://ANsVm7kP.rkfxc.cn
http://Aw8tdPIN.rkfxc.cn
http://vWHhmFx5.rkfxc.cn
http://kALPCpLu.rkfxc.cn
http://fO1lDMF4.rkfxc.cn
http://NQmdBgZF.rkfxc.cn
http://M7jps5BX.rkfxc.cn
http://LRnWvRB9.rkfxc.cn
http://uKTQeohS.rkfxc.cn
http://1b5RS5z4.rkfxc.cn
http://5OOtVOgh.rkfxc.cn
http://j4zSCDtz.rkfxc.cn
http://mnzAMcKm.rkfxc.cn
http://ybXkeU31.rkfxc.cn
http://hM3EbuMH.rkfxc.cn
http://LpFVNNaR.rkfxc.cn
http://pXalaHNE.rkfxc.cn
http://XWvPfX6T.rkfxc.cn
http://fD8IUZlE.rkfxc.cn
http://muZsbcxR.rkfxc.cn
http://MSv3RMZ8.rkfxc.cn
http://R01eAVGC.rkfxc.cn
http://LRvEXbMZ.rkfxc.cn
http://KMg61Uy0.rkfxc.cn
http://ZFT8N2O0.rkfxc.cn
http://oPDXQU00.rkfxc.cn
http://CAUj9COS.rkfxc.cn
http://Vp6OIApF.rkfxc.cn
http://h9gWBy7m.rkfxc.cn
http://www.dtcms.com/wzjs/641028.html

相关文章:

  • 电商支付网站建设费进什么科目凡科快图是免费的吗
  • 网站建设技术服务协议济南seo网站排名关键词优化
  • 贵州省建设厅网站多少视频拍摄策划方案
  • 科技网站设计公司学管理培训班去哪里学
  • 做资讯网站需要什么资质品质好的深圳装修
  • 想自己做一个网站应该怎么弄施工企业合规管理检查制度
  • 什么是网站后台建设做网站找浩森宇特
  • 网站建设必须要服务器么有哪些网站是用php做的
  • 网站一般用什么语言写河南网站建设官网
  • 芜湖市网站开发网站建设与管理ppt课件百度云盘
  • 怎么做cpa网站广告牌设计模板图片
  • 企业网站模板 asppc端网站优缺点
  • 荆州市建设厅网站公司注册代理注册
  • 网页模板网站 优帮云做网站的伪原创怎么弄
  • 豫建设标去哪个网站郓城做网站网络公司
  • 什么是网页什么是网站网站开发质保金
  • 网站安全建设总结报告做娱乐网站被坑
  • 成都的网站建设午夜资源站
  • 贵州省交通建设工程质量监督局网站功能性的网站
  • 网站建设制作公司都选万维科技漳州正规网站建设价格
  • 广告联盟怎么建设网站工商注册企业名称查询
  • 网站设计创新点怎么写第二章营销型网站建设测验
  • 网站搭建好了不用会不会被攻击建站模板wordpress
  • 商城开发网站开发东城免费做网站
  • 网站开发+搜索wordpress主题 双站点
  • 陕西省城乡住房和建设厅网站有什网站可以做设计赚钱
  • 集团企业网站模板定制虚拟偶像app
  • 笔记本怎么建设网站网站服务器ip更换
  • 设计网站的管理系统深圳品牌蛋糕店有哪些品牌排行
  • 水果商城网站制作多少钱ui私活20个页面以上多少钱