Chinaunix首页 | 论坛 | 博客
  • 博客访问: 490626
  • 博文数量: 74
  • 博客积分: 750
  • 博客等级: 军士长
  • 技术积分: 1453
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-29 15:59
文章分类
文章存档

2014年(30)

2013年(8)

2012年(36)

分类: C/C++

2014-07-03 11:09:38

在Qt中的显示问题,我觉得有些东西需要大家注意一下。
在原有的程序是这样的:
void Axis_IO_Screen::axis_timeout()

int a[4],b[4]; 
QString ab_str[4];
for(int i=0;i<4;i++){
a[i] = p_mainwindow->ssb3_test->axis_ready_inport(i);
b[i] = p_mainwindow->ssb3_test->axis_alarm_inport(i);
printf("axis_ready_inport  a[%d] = [%d]--------b[%d] = [%d]\n",i,a[i],i,b[i]);
ab_str[i] = ab_str[i].sprintf("通道[%d]的ready=[%d], alarm=[%d]",i,a[i],b[i]); 
axis_info_label[i]->setText(ab_str[i]);
}
这个时候会出现空指针的现象,这个问题的原因是什么,如果有知道的我请您做一下留言。非常感谢!
给出的解决方案就是在一个for循环分解成为两个循环来完成。这样肯定能保证第一个a , b 数组赋值完成。
第二个for循环一定不为空。
void Axis_IO_Screen::axis_timeout()
{
int a[4],b[4];
QString ab_str[4];
for(int i=0;i<4;i++){
a[i] = p_mainwindow->ssb3_test->axis_ready_inport(i);
b[i] = p_mainwindow->ssb3_test->axis_alarm_inport(i);
printf("axis_ready_inport  a[%d] = [%d]--------b[%d] = [%d]\n",i,a[i],i,b[i]);
ab_str[i] = ab_str[i].sprintf("通道[%d]的ready=[%d], alarm=[%d]",i,a[i],b[i]);
//axis_info_label[i]->setText(ab_str[i]);
}
for(int j=0;j<4;j++){
axis_info_label[j]->setText(ab_str[j]);
}



阅读(1902) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~