c++ - QPainter 和 paintEvent : what is the use of QPaintEvent *event?

标签 c++ qt

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

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

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

为了画出我想要的东西,我可以这样写paintEvent方法,而且永远不要使用*event

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

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

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

所以,我有两个问题:

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

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

谢谢你给我的任何见解

最佳答案

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

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

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

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

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

关于c++ - QPainter 和 paintEvent : what is the use of QPaintEvent *event?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43209237/

相关文章:

linux - 如何在 Visual Studio Code 中使用 Qt?

c++ - 将 Qt 添加到现有的 Visual Studio c++ 项目

c++ - GLEW _First 是 nullptr

c++ - 如何在 C++ 中逐个元素地比较两个 vector 的相等性?

c++ - 无法使用 openssl c++ 进行编译

java - 对于想要快速入门的 Java 程序员来说,哪些 Visual C++ 引用资料值得一看?

c++ - 错误正方体qt

c++ - Qt拖放: Add support for dragging files to the application's main window

c++ - QSize 与使用 2 Int 有常量

python - 内部指针方法的工作原理