两个小部件上的QWidget :: mousePressEvent()

时间:2016-11-27 12:06:43

标签: c++ qt qwidget qlabel qmouseevent

我正在尝试同时运行两个QWidget::mousePressEvent()个处理程序。我有两个小部件,A和B. B继承自QLabel,A来自QWidget。我对它们都重载了QWidget::mousePressEvent()。来自B的小部件正在获得QPoint光标位置并且它正在工作。 小部件从B类获取此信息,但不幸的是,只有当我单击小部件B外部的其他位置时(在蓝色区域中)。 那么,如果我点击小部件B中的棕色空间,我该如何从小部件A运行QWidget::mousePressEvent()

enter image description here

1 个答案:

答案 0 :(得分:1)

event->ignore(),因为A落后于B,所以A大概是B的父母(可能不是直接的,但只要它在树下,这并不重要),所以如果在B::mousePressEvent() event->ignore() mousePressEvent()结束时,事件将继续向下传播并触发A mousePressEvent() ...最终,如果没有其他任何事情消耗该事件路径。

此外,由于%matplotlib inline import pandas as pd import geopandas as gp import numpy as np import matplotlib.pyplot as plt from shapely.geometry import Point # Create Fake Data df = pd.DataFrame(np.random.randint(10,20,size=(35, 3)), columns=['Longitude','Latitude','data']) # create Geometry series with lat / longitude geometry = [Point(xy) for xy in zip(df.Longitude, df.Latitude)] df = df.drop(['Longitude', 'Latitude'], axis = 1) # Create GeoDataFrame points = gp.GeoDataFrame(df, crs=None, geometry=geometry) # Create Matplotlib figure fig, ax = plt.subplots() # Set Axes to equal (otherwise plot looks weird) ax.set_aspect('equal') # Plot GeoDataFrame on Axis ax points.plot(ax=ax,marker='o', color='red', markersize=5) # Create new point center_coord = [Point(15, 13)] center = gp.GeoDataFrame(crs=None, geometry=center_coord) # Plot new point center.plot(ax=ax,color = 'blue',markersize=5) # Buffer point and plot it circle = gp.GeoDataFrame(crs=None, geometry=center.buffer(2.5)) circle.plot(color = 'white',ax=ax) 可能只是调用某些功能,你也可以从A的事件处理程序手动执行它,你需要的只是对它的引用,这是很容易实现的。如果它们相关,您可能必须将坐标映射到父级。