gpt4 book ai didi

c++ - 在进入事件时填充 QRect

转载 作者:行者123 更新时间:2023-11-30 02:48:00 24 4
gpt4 key购买 nike

我有一个任务:当鼠标光标进入 QRect 对象时,应该绘制它。几个小时后,我做了这个。

void myObj::mouseMoveEvent(QMouseEvent* event){   
int x1, y1, x2, y2;
QPoint point = event->pos();
rect->getCoords(&x1, &y1, &x2, &y2);
if((point.x() >= x1) && (point.x() <= x2) && (point.y() >= y1) && (point.y() <= y2)){
changeRectColour();
}else{
brush->setColor(Qt::green);
repaint();
}
}

myObj继承自QWidget。但我认为我的想法效率不高。因为每次鼠标移出 QRect 时,它都会将颜色更改为绿色(即使它是绿色的)。不幸的是,QRect 没有 enterEvent() 函数。能否请您给出如何正确执行此操作的建议。

最佳答案

QWidget::repaint() 表示“现在就画!!!我等不及了!”。使用 QWidget::update()相反,它将把几个绘画请求折叠成一个(在文档中有更好的解释)。

顺便说一句,你基本上是在重新实现QRect::contains()。您的新代码将是

void myObj::mouseMoveEvent(QMouseEvent* event){   

QPoint point = event->pos();
if(rect->contains(point, true)){
changeRectColour();
}
else{
brush->setColor(Qt::green);
update();
}
}

关于c++ - 在进入事件时填充 QRect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22295287/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com