找回密码
 立即注册
收起左侧

Qt 点击treewidget的item更新tablewidget,第一下无效,第二下有....

1
回复
5498
查看
[复制链接]
累计签到:1 天
连续签到:1 天
来源: 2015-12-11 17:06:07 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
有一个treewidget,我要的效果是点击了treewidget的一个item后,使用测试好的方法去服务器拿到一些数据,然后依次的set到另一个tablewidget当中查看。

这是我的连接。
  1. connect(ui->groupTreeWidget,SIGNAL(itemClicked(QTreeWidgetItem*,int)),this,SLOT(handleDeptClicked(QTreeWidgetItem*)));
复制代码
槽函数在这里:
  1. void MainWindow::handleDeptClicked(QTreeWidgetItem* target)
  2. {
  3.     qDebug()<<"clicked";
  4.     ui->memberTableWidget->setRowCount(MEMBER_ARRAY.size());
  5.     ui->memberTableWidget->clearContents();
  6.     getMemberList(target->data(1,Qt::DisplayRole).toDouble(),"0","0");
  7.     vector<member>::iterator iter;
  8.     int m = 0;
  9.     for(iter = MEMBER_ARRAY.begin();iter != MEMBER_ARRAY.end();iter++)
  10.     {
  11.         ui->memberTableWidget->setItem(m,0,new QTableWidgetItem(iter->userid));
  12.         ui->memberTableWidget->setItem(m,1,new QTableWidgetItem(iter->name));
  13.         ui->memberTableWidget->setItem(m,2,new QTableWidgetItem(iter->position));
  14.         ui->memberTableWidget->setItem(m,3,new QTableWidgetItem(iter->mobile));
  15.         ui->memberTableWidget->setItem(m,4,new QTableWidgetItem(iter->email));
  16.         ui->memberTableWidget->setItem(m,5,new QTableWidgetItem(QString::number((int)iter->status,10)));
  17.         m++;
  18.     }
  19.     ui->memberTableWidget->repaint();
  20. }
复制代码
getMemberlist()是一个函数用来拿数据的,然后在这个函数里面更新全局的MENBER_ARRAY,之后就是迭代器输出给Tablewidget。

进入程序的第一下点击一个有用户的item,是可以正常显示的。
但是点击一个空白的item之后,再点击一个有用户的item就无法正常的显示了,要再去点击一下才会出现tablewidget的更新。
我是一个新手没有系统学习过qt,问一下这个问题是为什么,还有应该搜什么关键字可以找到答案?

回复

使用道具 举报

累计签到:1 天
连续签到:1 天
2015-12-15 14:38:04 显示全部楼层
我错了,ui->memberTableWidget->setRowCount(MEMBER_ARRAY.size());
应该写到getMemberList(target->data(1,Qt:isplayRole).toDouble(),"0","0");的后面,
结了结了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了