如何创建从 C++ 对象数组填充的 qtablewidget?

Posted

技术标签:

【中文标题】如何创建从 C++ 对象数组填充的 qtablewidget?【英文标题】:How to create a qtablewidget populated from a C++ object array? 【发布时间】:2015-06-23 15:27:51 【问题描述】:

我查看了很多教程和示例,但我似乎找不到一个像样的 qtablewidget 示例,该示例使用 objects 获取数据。几乎所有详细教程(硬编码数据除外)都涉及数据库和 qtableview。

一些背景知识:我编写了一个控制台程序,用于计算和显示班级学生的成绩和作业。老师输入诸如部分权重、作业名称、出勤日期、作业最高分数等数据。然后她输入这些不同作业的分数或每个学生的出勤率。教师数据保存在教师对象中(例如Teacher teacher;),学生数据保存在组成班级名册的学生对象数组中。 (例如Student class_roster[50];)显然,各种函数在各自的类中处理计算。它在控制台中完美运行。

现在,作为一种活动扳手,我必须使它成为一个 GUI 程序而不是控制台。作为 C++,Qt 似乎是一种类似于 Visual C# 的有趣方法。在尝试完成这项工作 3 天之后,随着我的最后期限快速接近,我屈服于这样一个事实,即我不知道在 Qt 方面我在做什么。非常感谢您的帮助。

我发布了一张我在 Qt Creator 中设计的 GUI 的图片。从那以后,有人可以为我提供一个可靠的例子来说明我正在努力完成的事情吗?我犹豫是否要一个好的教程(因为关于那个的政策)

所以,简而言之,我需要知道的是:

1)如何将文本字段中的数据加载到我的类/对象中。

2)如何使用类/对象中的数据填充 qtablewidget。

注意:这是一个测试类 (V&V),所以 Qt 不是项目。我完成的代码很重要,所以我在这里要求的任何内容都没有违反任何道德规范。我们只需要一个用于线束的 GUI。

【问题讨论】:

你用什么商品型号? 浏览 Qt 文档中提供的大量示例:doc.qt.io/qt-5/modelview.html 和 doc.qt.io/qt-5/examples-itemviews.html 【参考方案1】:

在这里查看QTableWidget的信号http://doc.qt.io/qt-4.8/qtablewidget.html#details 例如,当您的表格的一个单元格发生变化时,会发出此信号: 无效 QTableWidget::itemChanged(QTableWidgetItem * item); 将该信号连接到将单元格数据发送到对象的插槽,即:

void pseudoSlot(QTableWidgetItem * item)
 
   if(item.column() == 1) //its last name
   
       passLastNameDataToYourObjects(item.row, item->text()); //item->row() will be the index of the student
   
   //continue with the rest of the cases

这涵盖了第一个问题。

为了填充您的表格,当您创建它时,您只需创建单元格,用您的数据填充它们并插入它们,即:

void pseudoFillTable(QTableWidget *table_)

    foreach(Student s, classRoster)
    
        insertRow(table_.rowCount());
        QTableWidgetItem *lastNameItem = new QTableWidgetItem(s.getLastNameOrSomething());
        table_->setItem(table_.rowCount(), 1, lastNameItem); //the 1 is the index of the lastName column
        //and so on
    

代码是一个近似值,但它可能会帮助您了解这个想法。

【讨论】:

谢谢!当然,我不得不对其进行相当多的调整。但这给了我正在寻找的背景。

以上是关于如何创建从 C++ 对象数组填充的 qtablewidget?的主要内容,如果未能解决你的问题,请参考以下文章

在运行时更改用类对象填充的数组的大小 c++

如何使用文件填充数组并将其与用户输入 c++ 进行比较

从 C++ 中的字节数组创建 HICON?

如何在 C++ 中构建一个对象数组,这些对象都继承自一个主类?

如何从填充零的 3 维 numpy 数组创建 4 维 numpy 数组?

C++:如何在堆栈上创建对象数组?