【问题标题】:QPainter and paintEvent : what is the use of QPaintEvent *event?QPainter 和paintEvent:QPaintEvent *event 有什么用?
【发布时间】:2017-04-04 13:52:24
【问题描述】:

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

为了创建 GUI,我们使用 Qt,因为我之前在另一个项目中使用它,它是免费的,而且我通常发现文档通常很详细。此外,我知道它有一个绘图模块,虽然我从未使用过它。

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

要画我想要的,我可以这样写paintEvent方法,只是永远不要使用*event

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

或者我可以这样写,它也可以工作

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

所以,我有两个问题:

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

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

感谢您提供的任何见解

【问题讨论】:

  • QPaintEvent。它提供有关事件的其他信息,特别是小部件的哪些区域需要重新绘制。

标签: c++ qt


【解决方案1】:

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

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

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

    这意味着当您准备好时,操作系统会通知您处理绘制事件。

  2. QPaintEvent 提供有关事件的其他信息。目前它可以给你一个区域来重绘。在某些情况下,它可以用于绘画优化。但在简单的情况下不使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 2019-05-09
    • 1970-01-01
    相关资源
    最近更新 更多