在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]);
}
阅读(1968) | 评论(0) | 转发(0) |