2019/2/19 日QTableWidget插入CellWidget错误

今天这个错误找了很久 ,对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这种功能强大,参数较多的控件要想随心所欲还是要多研究,小心谨慎。

猜你喜欢

转载自blog.csdn.net/qq_36533978/article/details/87717543
今日推荐