大家好,我是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
感谢您的帮助!
答案 0 :(得分:0)
list
是否有机会成为全球实体?如果是(我认为是),你继续添加项目。
第一次调用add_tableview()
时,list
为空,QStandardItem
为空,添加了三个add_tableview()
指针,用于追加这三个项目的行。到目前为止,上帝。
您再次呼叫QStandardItem
,现在又创建了另外三个appendRow()
并将其附加到列表中(其中仍包含上次呼叫中的三个)。调用add_tableview()
实际上会尝试插入六个项目,前三个项目已经存在于模型中。如您所知,您不能将相同的项目指针添加到模型两次。值得庆幸的是,Qt不会崩溃,但会为其中的项目指针插入三个空列。
解决方案:在list.clear()
方法调用结束{{1}}或使用本地变量作为列表。开销应该很小。
最好的问候 d