我已经对QMouseEvents做了一些研究,但是我很难将QMouseEvent传递给子窗口小部件。我有一个像这样结构的程序:
MainWindow > DockWidget > WidgetList > WidgetTarget
MainWindow是DockWidget等的父...我的主要目标是知道我何时点击MainWindow并将此QMouseEvent传递给WidgetTarget。
我阅读了关于QMouseEvent的文档并查看了QEvent的有用函数ignore(),但它与我想要的相反。 QMouseEvent传递给父级,所以如果我在WidgetTarget中,则将QMousseEvent传递给WidgetList。
那么有没有办法将QMousseEvent传递给子窗口小部件而不是父窗口小部件? 我看到了Qt :: WA_TransparentForMouseEvents旗帜的一些技巧,但我不知道这是否是正确的方法
编辑: 我将使用mousePressEvent(QMouseEvent * event)在WidgetTarget中详细介绍该工作。它基本上是制作吸管。这里是我的代码:
void WidgetTarget::mousePressEvent(QMouseEvent *event)
{
if(eyeDropperActivated) //true when clicked on button eyedropper
{
QLabel *label = (QLabel*)MainWindow->childAt(event->x(),event->y());
QColor color; //Get the pixel value at x,y event from the QLabel pixmap
setColor(color) //Set the color parameter of WidgetTarget
}
}
我读了你的有用的评论,是的,我认为这很容易如果我在MainWindow上实现这个代码,但是吸管功能在WidgetTarget中,所以基本上我必须找到在WidgetTarget中激活吸管的方法,检查MainWindow如果吸管被激活,然后向WidgetTarget发送一个带有QColor的信号?
最好的问候