QTableView 行问题

发布于 2024-11-05 19:01:42 字数 1137 浏览 4 评论 0原文

大家好,我是 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_tableviewqtableview的对象

感谢您帮助我!

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

演出会有结束 2024-11-12 19:01:42

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

第一次调用 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 three QStandardItem 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 three QStandardItems and APPEND them to the list (which still contains the three from the last call). Invoking appendRow() 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 call list.clear() or use a local variable for the list. The overhead should be minimal.

Best regards
D

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文