Qpainter plot disappears
我使用 Qt 框架创建了一个应用程序,并使用 QPainter 绘制了一些图形。
我可以画出exp函数,我想画出y’=y微分方程(欧拉法)的数值解,也就是exp(x),看起来画得对,但是当我尝试调整大小时在窗口中,exp 函数仍然存在,但由于某种原因近似值消失了。
可能是什么问题?
(我知道代码很丑,因为现在我把所有东西都放在了标题中)
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
#ifndef MAINWINDOW_H
#define MAINWINDOW_H #include <QPointF> class Plot : public QWidget //DRAWING THE COORDINATE SYSTEM //SPLITTING Y AND X ASIS TO UNITS for(int i = –20/2.0f; i <= 20/2.0f; ++i) //DRAWING EXP(X) FUNCTION for(int i = 0; i < m_number_of_points; ++i) //DRAWING THE NUMERICAL APPROXIMATION OF THE SOLUTION OF y’=y DIFF. EQ, WHICH IS exp(x) void paintEvent(QPaintEvent*)
float derived_func(float param) //INITIALIZING THE VALUES FOR COORDINATE SYSTEM //INITIALIZING THE VALUES FOR DRAWING exp(x) //INITIALIZING THE VALUES FOR APPROXIMATION #endif |
不能确定,但??我想这很可能是由于每次计算时都修改了 m_initial_condition 变量。作为诊断此类问题的好方法,我建议将 const 添加到实际上不应更改的变量中。
- 你是对的,如果我声明一个值为 m_initial_condition 的变量并在 for 循环中使用它,我不知道为什么,但它正在工作。谢谢!
- @zerge 它实际上非常简单 – 每次需要重绘窗口时都会调用 paintEvent 函数(例如,在 alt 选项卡、调整大小等情况下)。如果每次发生此类事件时都修改某个变量,则在几次重绘后,其值将与初始值相差甚远。
- 非常感谢你!我是 Qt 的新手,但对很多东西仍然不熟悉。
来源:https://www.codenong.com/29277269/