今天这个错误找了很久 ,对QTableWidget进行如下操作后,发现有的cellwidget是空的,并没有出现,后来用下面代码中的
ui.pressureTable->insertRow(total_row_count + 1);
ui.pressureTable->removeRow(total_row_count + 1);
进行刷新,就暂时好了,猜测是少了刷新操作,长期关注这个问题
PressureRecordWidget *pressure_widget = new PressureRecordWidget;
pressure_widget_list.append(pressure_widget);
int total_row_count = ui.pressureTable->rowCount();
ui.pressureTable->insertRow(total_row_count);
//解决行不显示bug 增加行再删除
ui.pressureTable->insertRow(total_row_count + 1);
ui.pressureTable->removeRow(total_row_count + 1);
ui.pressureTable->setRowHeight(total_row_count, 103);
ui.pressureTable->setCellWidget(total_row_count, 0, pressure_widget_list.last());
pressure_widget_list.last()->SetProperty(press_data_list, pressure_value);
ui.pressureTable->selectRow(total_row_count);
分割线===========================================================================
可能找到了更好的解决办法
所以我加了这句话 希望能解决 ui.pressureTable->viewport()->update();
分割线===========================================================================
测试了一下,很遗憾上面都没卵用
终极分割线===========================================================================
今天无意间加了设置列的宽度,就解决了问题
总结
QTableWidget 使用前一定要把该有的属性设置好,如下属性:
设置多少行,多少列,行高,列宽
每插入一行 相应的属性都要设置,比如这个问题中的列宽 ,我插入新的行,没有设置列宽 ,自以为设置了控件等宽
ui.pressureTable->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);就能自动设置好列宽,实际不是,导致随即行不显示。解决办法就是增加一行参数设置完全,即使有了控件等宽 setcolwidget无效,仍然需要设置
记下这个问题,使用QTableWidget这种功能强大,参数较多的控件要想随心所欲还是要多研究,小心谨慎。