• 11282阅读
  • 4回复

QTableWidget 自动换行问题 [复制链接]

上一主题 下一主题
 

只看楼主 倒序阅读 楼主  发表于: 2014-04-29
问题如下:
(1)接收数据函数是通过线程不断调用的。

当收到数据时,通过一个信号函数如:update(int num)发送数据;
(2)通过槽函数接收如:rec_slot(int num)接收数据;
需要将接收到的数据显示到QTableWidget 中,
比如说接收到第一个数据则显示在第一行的第一个空格当中,
接收到第二个数据时则显示到第二行的第一个空格中,
依次类推,接收到新的数据就换行显示。该怎么实现呢??
这个问题困扰很久了,希望懂这方面的能够指点下,非常感谢。
离线realfan

只看该作者 1楼 发表于: 2014-04-29
用一个静态变量,作计数器,每次++

只看该作者 2楼 发表于: 2014-04-29
回 realfan 的帖子
realfan:用一个静态变量,作计数器,每次++ (2014-04-29 20:31) 

void Diagnose::Rec_Fault_Data_Slot(int n1,int n2,int n3)
{
    int i=0;

    if(tablewidget->item(i,0)==0)
    {
       QString text=QString();
       text = QString().sprintf("%d",n1);
       tablewidget->setItem(i,0,new QTableWidgetItem(text));//
       text = QString().sprintf("%d",n3);
       tablewidget->setItem(i,1,new QTableWidgetItem(text));//
       tablewidget->setItem(i,2,new QTableWidgetItem(table1[n1));
       tablewidget->setItem(i,3,new QTableWidgetItem(table2[n2]));
       tablewidget->update();
       i++;
       if(i>=10)
            i=0;
    }

}

我是想通过判断第一行的第一个空是否为空来确定是不是换行,但是这样行不通,只能显示在第一行,之后就不能显示了,而且第二次接收后也不能显示?很奇怪,请教下这断程序有什么问题?应该怎么改?谢谢
离线realfan

只看该作者 3楼 发表于: 2014-04-29
回 可惜不一样 的帖子
可惜不一样:void Diagnose::Rec_Fault_Data_Slot(int n1,int n2,int n3)
{
    int i=0;
....... (2014-04-29 20:48) 

int i =0;
每次进这个槽函数,i都会初始化为0.所以,始终是对第一行操作。
用static int i = 0;或把计数作为类的成员变量。

只看该作者 4楼 发表于: 2014-04-29
回 realfan 的帖子
realfan:int i =0;
每次进这个槽函数,i都会初始化为0.所以,始终是对第一行操作。
用static int i = 0;或把计数作为类的成员变量。
 (2014-04-29 20:58) 

非常感谢版主的解答~
快速回复
限100 字节
 
上一个 下一个