QT中QPainter实时绘图

赵同学 2016-12-21 05:38:12
问题是这样的:
在QT工程中有一个子类化的QWidget类,用于使用QPainter绘图,还有一个主窗口类的Widget,也是子类化的QWidget,显示的界面是这样子的


界面中红色区域是用来绘图的,右边有四个按钮,分别用来获取数据,这四个按钮和用来绘图的QWidget都是是主窗口的子部件,想要达到的结果是点击“启动传感器”按钮就进行传感器的数据采集线程,每一次传感器获取最新的数据后,可以在绘图区域绘制出来,还没有头绪?

我的实现是在子类化的QWidget类(用于绘图的)中重载QPaintereven()函数,在该函数里面绘图,然后该类有一个槽(即以下程序中的RunSensor函数)用于数据获取,槽里面是一个while(1)死循环,
void Renderarea::paintEvent(QPaintEvent *)
{
QPainter painter(this);
QPen pen;
pen.setWidth(2);
painter.setPen(pen);
painter.translate(250,250); //绘图窗口为500*500,坐标中心移动到窗口中间
painter.scale(1, -1); //Y坐标变换为向上
for(int i=0;i<10;i++)
{
painter.drawPoint(a[i],b[i]);
}

}

QSize Renderarea::sizeHint() const
{
return QSize(500 , 500);
}

QSize Renderarea::minimumSizeHint()const{

//设置最小窗口大小
return QSize(200 , 200);
}

void Renderarea::LinkSensor()
{
for(int i=0;i<10;i++)
{
a[i]=i+1;
b[i]=i+1;
}
}

void Renderarea::RunSensor()
{
int TimeCount = 50;
while(1)
{
for(int i=0;i<10;i++)
{
a[i]=i+1+TimeCount;
b[i]=i+1+TimeCount;
}


TimeCount +=50;
update();
}
}
...全文
2394 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
绘制??绘制成什么 饼状图还是树状图
赵4老师 2016-12-21
  • 打赏
  • 举报
回复
循环中添加消息处理?
        MSG msg;
        if (GetMessage(&msg,NULL,0,0)) {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }

24,855

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧