成都网站建设 四川冠辰网站建设,企业自建电商平台有哪些,wordpress浏览量显示,wordpress获取文章图片地址先看效果#xff1a; N年前的QQ就可以吸附到屏幕边缘#xff0c;聊天时候非常方便#xff0c;不用点击状态栏图标即可呼出QQ界面
自己尝试做了一个糙版的屏幕吸附效果。
关键代码#xff1a;
void Widget::mouseMoveEvent(QMouseEvent *e)
{int dx e-globalX() - l…先看效果 N年前的QQ就可以吸附到屏幕边缘聊天时候非常方便不用点击状态栏图标即可呼出QQ界面
自己尝试做了一个糙版的屏幕吸附效果。
关键代码
void Widget::mouseMoveEvent(QMouseEvent *e)
{int dx e-globalX() - lastPoint_.x();int dy e-globalY() - lastPoint_.y();int targetx,targety;bool enableAnimation false;if(mousePress_ false) {return;}//! 垂直方向if(this-y() EdgeAttachMargin this-y() ! 0) {//! 吸附顶部targety 0;enableAnimation true;} else {targety this-y();}//! 水平方向if(this-x() EdgeAttachMargin this-x() ! 0) {//! 吸附左边enableAnimation 1;targetx 0;} else {int rightx this-x()this-width();if(rightx (QApplication::desktop()-width()-EdgeAttachMargin) rightx ! QApplication::desktop()-width()) {//! 吸附右边targetx QApplication::desktop()-width()-this-width();enableAnimation 1;} else {targetx this-x();}}if(1 enableAnimation){if(targetx 0) {hideType_ HideType::to_xleft;} else if(targetx QApplication::desktop()-width()-this-width()) {hideType_ HideType::to_xright;} else if(targety 0) {hideType_ HideType::to_y;}startAnimation(QPoint(targetx,targety),QPoint(this-x(),this-y()));} else {if(hideType_ HideType::xleft) {int adjustX x();int adjustY y() dy;if(dx EdgeAttachMargin) {adjustX x() dx;hideType_ HideType::none;lastPoint_.rx() e-globalX();}this-move(adjustX, adjustY);lastPoint_.ry() e-globalY();} else if (hideType_ HideType::xright) {int adjustX x();int adjustY y() dy;if(dx -EdgeAttachMargin) {adjustX x() dx;hideType_ HideType::none;lastPoint_.rx() e-globalX();}this-move(adjustX, adjustY);lastPoint_.ry() e-globalY();} else if(hideType_ HideType::y) {int adjustX x() dx;int adjustY y();if(dy EdgeAttachMargin) {adjustY y() dy;hideType_ HideType::none;lastPoint_.ry() e-globalY();}this-move(adjustX, adjustY);lastPoint_.rx() e-globalX();} else {int adjustX x() dx;int adjustY y() dy;if(adjustX 0) adjustX 0;if(adjustX QApplication::desktop()-width() - width()) adjustX QApplication::desktop()-width() - width();if(adjustY 0) adjustY 0;if(adjustY QApplication::desktop()-availableGeometry().height() - height()) adjustY QApplication::desktop()-availableGeometry().height() - height();this-move(adjustX, adjustY);lastPoint_ e-globalPos();}}
}
鼠标悬停展开 / 离去收缩功能
主要依据void enterEvent(QEvent *event); void leaveEvent(QEvent *event);两个函数展开
动画效果使用QPropertyAnimation进行可以参见另一篇博文中的例子https://blog.csdn.net/wisdomroc/article/details/135975578 全套代码链接Qt实现窗口吸附屏幕边缘 自动收缩