我有一些用QGraphicsRectItem绘制的柱状图,其中一些矩形很长,一些很短。选择长矩形没有问题,但对于短矩形可能会有困难。
所以我想知道是否有一种方法可以指定自定义区域,以触发项目的mousePressEvent,这样矩形就会有相同大小的选择区域。
除了矩形之外,我还在同一行上绘制了一些文本。将它们分组并为组编写mousePressEvent是否有帮助?
谢谢!
我有一些用QGraphicsRectItem绘制的柱状图,其中一些矩形很长,一些很短。选择长矩形没有问题,但对于短矩形可能会有困难。
所以我想知道是否有一种方法可以指定自定义区域,以触发项目的mousePressEvent,这样矩形就会有相同大小的选择区域。
除了矩形之外,我还在同一行上绘制了一些文本。将它们分组并为组编写mousePressEvent是否有帮助?
谢谢!
如果能看到您所询问的示例图像将会很有帮助,但我认为我知道您的意思。
个人而言,我会创建自己的类,继承自QGraphicsItem(如果需要信号和槽,则继承自QGraphicsObject)。然后,该类可以提供要表示选择区域的完整区域的boundingRect(),但paint()函数仅绘制条形的可见部分。类似以下代码:
class Bar: public QGraphicsItem
{
Q_OBJECT
public:
Bar(int x, int y, int width, int height, int visibleBarHeight);
// returns the area of the object
QRectF boundingRect() const;
void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0);
};