2

大家好,我是 QT 的新手,我正在做 Qtableview 以将 3 列中的信息添加到无限行,例如

|--1--|--2--|--3--|

|--1--|--2--|--3--|

|--1--|--2--|--3--|

这就是我想要插入/追加行的方式,但这就是我在插入/追加行功能之后得到的方式。

|--1--|--2--|--3--|

|-----|-----|-----||--1--|--2--|--3--|

|-----|-----|-----||-----|-----|-----||--1--|--2--|--3--|

我得到了空白并增加了列数

我正在使用QStandardItemmodel模型这是创建模型项的代码

void tableview::add_tableview() //this is used to add data to tableview
{
    //to get data from line edit in add window
    QStandardItem *item_1 = new QStandardItem(QString(enter1_edit->text()));
    QStandardItem *item_2 = new QStandardItem(QString(enter2_edit->text()));
    QStandardItem *item_3 = new QStandardItem(QString(enter3_edit->text()));

     list << item_1 << item_2 << item_3;

     model->appendRow(list);

    //to set the model
    main_tableview->setModel(model);
}

qlineedit enter1_edit,enter2_edit & enter3_edit使用(在其他函数/方法中)添加行中的值

main_tableview是对象qtableview

谢谢你帮助我!

4

1 回答 1

0

叮叮叮,我有。我试图重现你的问题但没有成功,直到我尝试了一些......次优:)。您是否list有机会成为全球实体?如果是(我认为是),您将继续向其中添加项目。

第一次调用add_tableview()all 是好的,list是空的,QStandardItem添加了三个指针,并用于将这三个项目附加到一行。到目前为止,上帝。

add_tableview()再次调用,现在您创建另外三个QStandardItems 并将它们附加到列表中(其中仍然包含上次调用的三个)。InvokingappendRow()实际上尝试插入六个项目,其中前三个已经存在于模型中。如您所知,您不能将同一个项目指针添加到模型两次。值得庆幸的是,Qt 没有崩溃,而是为其中已经存在的项目指针插入了三个空列。

解决方案:在add_tableview()方法调用结束时list.clear()或为列表使用局部变量。开销应该是最小的。

最好的问候
D

于 2011-05-07T13:52:45.123 回答