2011-11-14 143 views
0

我对Qt真的很陌生,我不想要任何复杂的东西。我所需要的是能够声明某种矩形,然后能够点击并绘制矩形。Qt点击画布

我找到的教程都没有包含任何可以点击对象的东西(我想尽可能区分鼠标左键和右键并获得点击坐标和任何后续移动)。

绘画教程展示了如何直接在窗口或对话框上绘画,但我已经放置了一些按钮来帮助控制。

我不认为绘图部分是问题,它更多的是点击部分。我需要创建一个新的QWidget?这很难吗?

回答

2

有几种不同的方法可以自定义绘图。我会从高层次的大致责令其低级别:

  1. 使用Qt Quick的/ QML/QDeclarative。 QML允许您使用Javascript并提供对标准Qt API的访问。如果你的需求很简单,基本的直线等,这可能是一个非常简单的方法来编写你的应用程序。请参阅QML Examples.
  2. 使用QGraphicsScene和QGraphicsView。您需要了解使用该模型和视图的模型和视图,但这会为您提供所有需要绘制的任何架构和支持。请参阅Graphics View examples
  3. 子类QWidget并自己实现绘图和鼠标处理。如果您的需求非常基本,这种相当低级的方法可能非常简单。使用这种方法,您可以控制所有内容,并最终需要将坐标转换为屏幕上绘制的内容。 Tetrix example可能是一个很好的起点。

随着最后一种方法,你需要实现,以获得进入鼠标事件正确的虚拟方法:

virtual void mouseMoveEvent (QMouseEvent * event) 
virtual void mousePressEvent (QMouseEvent * event) 
virtual void mouseReleaseEvent (QMouseEvent * event) 

您还需要通过重写来实现自定义的绘画paint eventAnalogClock example详细介绍了自定义绘画的所有步骤。