通过重写QT中QWidget类中的paintEvent函数,我们就可以做到在widget中进行函数图像的绘制。(我使用的是QCreator的UI设计器)
首先我们需要从QWidget继承一个子类,并重写他的paintEvent
class show_location : public QWidget
{
Q_OBJECT
protected:
void paintEvent(QPaintEvent *);//重写函数,函数定义在源文件中
public:
show_location(QWidget *parent = nullptr);
~show_location(){}
int m_count;
double x;
int axis_x[240];//储存轴的值
double axis_y[240];//储存y轴的值
QTimer* m_Timer;//定时器,用于刷新图像计时
public slots:
void creatData();//得到需要绘制的图像的函数值
private:
Ui::show_location *ui;
};
在绘制时,需要用到QPainter,QPainter在定义时需要“绑定”widget,否则会显示为未激活。
下面是类中函数的定义:
show_location::show_location(QWidget *parent) : QWidget(parent)
{
m_count = 0;
m_Timer = new QTimer(this);
m_Timer->start(125);//计时周期为125ms
connect(m_Timer,SIGNAL(timeout()),this,SLOT(creatData()));125ms刷新一次函数
}
void s