QPainter和paintEvent:QPaintEvent *事件有什么用?

时间:2017-04-04 13:52:25

标签: c++ qt

我有一个学校项目,涉及使用最少数量的颜色创建一个简单的GUI和着色图。我和同学一起工作,到目前为止,我们已经就如何将图形存储在内存中以及如何实现不同的着色算法提出了不同的想法。

要创建GUI,我们正在使用Qt,因为我以前将它用于另一个项目,它是免费的,我通常会发现文档通常都很详细。此外,我知道它有一个绘图模块,虽然我从未使用它。

在阅读完文档和一些示例之后,我能够绘制一些基本形状,我希望在一个小部件的设置区域内,并让他们正确响应调整小部件的大小。

为了绘制我想要的东西,我可以用这种方式编写paintEvent方法,并且永远不要使用* event

void DrawArea::paintEvent(QPaintEvent *event)
{
//method body
}

或者我可以这样写,也可以这样做

void DrawArea::paintEvent(QPaintEvent *)
{
//method body
}

所以,我有两个问题:

  1. 小部件如何知道何时调用paintEvent方法?
    如果我没有弄错的话,每个小部件都有一个绘画事件,我就是 覆盖它?如果不对,请纠正我,也许就是这样 为什么我不明白这个指针的工作方式。

  2. 什么是QPaintEvent指针? (我的意思是,它代表什么?)

  3. 感谢你给我的任何见解

1 个答案:

答案 0 :(得分:1)

这么多文字和很少的问题......

  1. 您应该了解窗口系统中的事件处理(关键字是事件循环,事件队列等;就Windows操作系统事件而言,命名为“消息”)。知道它是简单而有用的。

    简而言之,您的程序会一次又一次地要求操作系统执行新任务。如果它们存在,则提供有关它的一些信息,您应该处理它们。否则,OS将停止程序,直到出现此类任务。

    这意味着当您准备好时,OS会通知您处理绘画事件。

  2. QPaintEvent提供有关该活动的其他信息。目前它可以为您提供重绘区域。在某些情况下,它可用于绘画优化。但在简单的情况下,它没有被使用。