QRect::contains函数问题

Oskar_Sun Oskar_Sun 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
两个问题
#include "mywidget.h"
#include<QtGui>


MyWidget::MyWidget(QWidget *parent) :
QWidget(parent)
{
setMouseTracking(true);
LineOfRect=false;
}
void MyWidget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QPen pen(Qt::red,4);
painter.setPen(pen);
QRect rect(30,30,200,200);
painter.drawRect(rect);
}

void MyWidget::setcursor()
{
if(LineOfRect)
{
setCursor(Qt::OpenHandCursor);
}
else{
setCursor(Qt::ArrowCursor);
}
}

void MyWidget::mouseMoveEvent(QMouseEvent *event)
{
QRect rect(30,30,200,200);
if(rect.contains(event->pos(),false))
{
LineOfRect=true;
}
else{
LineOfRect=false;
}
setcursor();
QString pos=QString("%1,%2").arg(event->pos().x()).arg(event->pos().y());
QToolTip::showText(event->globalPos(),pos,this);
}



QRect::contains 函数帮助文档中:
bool QRect::contains ( const QPoint & point, bool proper = false ) const
Returns true if the given point is inside or on the edge of the rectangle, otherwise returns false. If proper is true, this function only returns true if the given point is inside the rectangle (i.e., not on the edge).
1.当proper为false时,当point在rect的边缘上应该也返回ture,但是我在上面的代码中鼠标在rect边缘上的时候鼠标形状并没有改变,而是当鼠标在rect内部时cursor才改变形状,为什么?
2.如果if语句改成 if(rect.contains(event->pos(),false)&&(!(rect.contains(event->pos(),ture)))) 可以实现当鼠标在rect边框上cursor形状改变么?
...全文

相关推荐

qt 实现不规则窗口

qt实现不规则窗口 源码

半宛清愁

QT读取系统信息--磁盘管理器

char cmd[100] = "free -m"; FILE * f = popen(cmd,"r"); char prt[100]; QString str; QStringList str2; int total,used; fgets(prt,100,f); fgets(prt,100,f); printf("%s",prt); str.append(prt); str2 = str.split(" ",QString::SkipEmptyParts); total = str2.at(1).toInt(); used = str2.at(2).toInt(); QString str3(QString("total Memory : ") + QString::number(total) + "MB"); m_ui->label_4->setText(str3); double per = (used - 0.0)/total; m_ui->progressBar_2->setValue(per * 100); pclose(f);//内存查询完毕 memset(cmd,100,'0'); str = ""; str2.clear(); total = used = 0;//数据初始化 strcpy(cmd ,"df -hT"); f = popen(cmd,"r"); int length;

a903265446

qt实现类似QQ伸缩窗口--鼠标事件应用

QT实现一个窗体中包含左右两个窗体,通过鼠标事件,隐藏左边窗口,右边窗口伸展。在点击,显示左边窗口。

QQ_1695710968

CustomSwitchButton.rar

自定义QT开关按钮 全部是代码qpainter绘制而成

十七、

电动助力转向系统建模仿真中的控制策略与转向柱动力学研究(Matlab代码、Simulink仿真实现)

内容概要:本文系统解读了一套完整的多机器人路径规划(MAPF)MATLAB代码库,聚焦于基于优先级规划的无冲突轨迹生成方法。该框架将求解过程划分为几何、拓扑、调度与呈现四个解耦层次,涵盖地图解析、四邻域拓扑与Petri网构建、优先级启发式路径规划、时间同步与冲突消解,以及动画可视化等环节。其核心技术包括动态边权膨胀、节点预留历史、几何惩罚驱动的局部同步机制,有效提升了路径规划的效率与可行性。同时,框架支持Petri网双阶段整数规划求解,并提供完整的可视化链路,适用于仓储物流、无人机编队、自动驾驶等应用场景。; 适合人群:具备一定编程基础,熟悉MATLAB/Simulink环境,从事机器人、自动化、智能交通等领域研究的研发人员与高校研究生。; 使用场景及目标:① 学习并实现多智能体无冲突路径规划算法;② 研究动态边权膨胀、节点预留、Petri网建模等关键技术在路径规划中的应用;③ 借助可视化模块进行算法行为分析与教学演示;④ 在仓储调度、无人机编队等实际场景中进行算法迁移与二次开发。; 阅读建议:建议读者按照文档组织顺序,从总体架构入手,逐步深入各模块实现细节,重点关注优先级启发式设计、冲突消解机制与Petri网建模的接口逻辑,并结合提供的示例代码进行调试与可视化验证,以全面掌握框架的设计思想与工程实现要点。

然哥爱编程
评论 1
收藏 已收藏
分享
返回顶部
Oskar_Sun
Qt 21,503 成员 26,693 内容