gpt4 book ai didi

c++ - QRect 中的 QMouseEvent 问题

转载 作者:太空狗 更新时间:2023-10-29 23:47:42 24 4
gpt4 key购买 nike

操作系统::win_xp_sp3

Qt::4.6

是否可以在 QRect 中使用 QMouseEvent?我有父小部件,里面是一些带有文本“状态未更改”的 QLabel。

此外,在父部件内部是从 QRect 派生的 MyRect。

现在我只想在这个 MyRect 中执行 MouseEvent。例如,如果我对 MyRect 进行操作,则需要更改父小部件中的文本。

例如:

class MyRect : public QRect  {
public:
MyRect(int x, int y, int w, int h, ParentWidget* parent)
: QRect(x,y,w,h)
{
itsParent = parent;
}
~MyRect() {}

protected:
void mouseMoveEvent(QMouseEvent* event)

private:
ParentWidget* itsParent

};

void MyRect::mouseMoveEvent(QMouseEvent* event)
{
if(event->buttons() == Qt::LeftButton)
{
itsparent->label->setText("status changed");
}

}

什么都没发生

问题::是否可以像这样使用 QMouseEvent(仅在 QRect 上)?

最佳答案

QRect 既不是 QObject 也不是 QWidget,因此它不接收事件。它只是描述一个矩形的四个数字(从中推导出来没有意义)。您可以在小部件的鼠标事件处理程序中检查一个点是否为给定的矩形。喜欢:

void MyLabel::mouseMoveEvent( QMouseEvent* e ) {
if ( !rect.contains( e->pos() ) )
return;
//... handle mouse move
}

子类化的替代方法是 using an event filter .

关于c++ - QRect 中的 QMouseEvent 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4397656/

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