QTableView 行问题
大家好,我是 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
的对象
感谢您帮助我!
Hello guys i new to QT and i am doing Qtableview to add information in 3 columns to infinite row like
|--1--|--2--|--3--|
|--1--|--2--|--3--|
|--1--|--2--|--3--|
this is how i want to insert/append row but this is how i am getting after insert/append row functions.
|--1--|--2--|--3--|
|-----|-----|-----||--1--|--2--|--3--|
|-----|-----|-----||-----|-----|-----||--1--|--2--|--3--|
i am getting empty gaps and increased column count
i am using QStandardItemmodel
for model this is code that creates the model item
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);
}
The values in the rows are added using qlineedit enter1_edit,enter2_edit & enter3_edit
(its in other function/method)
main_tableview
is the object of qtableview
Thanks for helping me!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
丁丁丁,我有。
我试图重现你的问题但没有成功,直到我尝试了一些东西......次优:)。
您的
列表
是否是一个全球实体?如果是(我认为是),您将继续向其中添加项目。第一次调用
add_tableview()
一切都很好,list
为空,添加了三个QStandardItem
指针,并用于附加一行三项。到目前为止,上帝。您再次调用
add_tableview()
,现在创建另外三个QStandardItem
并将它们附加到列表中(其中仍然包含上次调用的三个)。调用appendRow()
实际上尝试插入六个项目,其中前三个项目已存在于模型中。正如您所知,您不能将相同的项目指针添加到模型两次。值得庆幸的是,Qt 不会崩溃,而是为其中已准备好的项目指针插入了三个空列。解决方案:在
add_tableview()
方法末尾调用list.clear()
或使用列表的局部变量。开销应该是最小的。最好的问候
D
Ding Ding Ding, I have it.
I tried to reproduce your problem without success unil I tried something...suboptimal :).
Is your
list
by any chance a global entity? If yes (and I assume it is) you keep adding items to it.First time you call
add_tableview()
all is good,list
is empty, gets threeQStandardItem
pointers added and is used to append a row with those three items. So far so god.You call
add_tableview()
again, now you create another threeQStandardItem
s and APPEND them to the list (which still contains the three from the last call). InvokingappendRow()
actually tries to insert six items, from which the first three allready exist in the model. And as you know you mustn't add the same item pointer to a model twice. Thankfully Qt doesn't crash but inserts three empty columns for the item pointers allready in it.Solution: At the end of your
add_tableview()
method calllist.clear()
or use a local variable for the list. The overhead should be minimal.Best regards
D