2015-06-23 123 views
0

我看了很多教程和示例,我似乎无法找到一个体面的qtablewidget利用对象为例。几乎所有的详细教程(硬编码数据除外)都涉及数据库和qtableview。如何创建一个从C++对象数组填充的qtablewidget?

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

现在,作为一种猴子扳手,我不得不把它做成GUI程序而不是控制台。作为C++,Qt似乎是一种类似于Visual C#的有趣方法。在尝试完成这项工作3天后,由于我的截止日期很快,我屈服于这样一个事实,即在涉及到Qt时我不知道自己在做什么。帮助将不胜感激。

我发布了一张我在Qt Creator中设计的图片。从这个角度来看,有人能为我提供一个我想要完成的实例吗?我毫不犹豫地请求一个很好的教程(因为有关政策的)

因此,概括地说,我需要知道的是:

1)如何从文本字段加载数据进入我的课程/对象。

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

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

GradeBook GUI Screenshot

+0

你使用什么样的模型? – Cits

+1

请阅读Qt文档中提供的大量示例:http://doc.qt.io/qt-5/modelview.html和http://doc.qt.io/qt-5/examples-itemviews。html –

回答

1

检查QTableWidget的的信号在这里http://doc.qt.io/qt-4.8/qtablewidget.html#details 例如,当你的表格的单元格改变这个信号emited: 无效QTableWidget的:: itemChanged(QTableWidgetItem *项目); 连接该信号到您的单元格的数据发送到你的对象插槽,即:

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 
    } 
} 

的代码是近似的,但它或许可以帮助你得到理念。

+0

谢谢!当然,我不得不唠叨一下。但是,这给了我正在寻找的上下文。 – LazyBear

相关问题