0

我有一个名为“学生”的班级(这个班级有表格)并且在我的主窗口中我有一个来自这个班级的 QVector !现在我想显示 QVector 的每个成员的形式,但我不能!(我这样做是因为我希望任何学生都有自己的特殊页面!女巫特别为自己保存任何更改)这是我的代码:

在我的主窗口中:

StHead = new QVector <Student> ;

void MainWindow::StudentSignIn (QString User,QString Pass)
{
///////Sign in things !
    int index = StudentSearch(User);
    Student* at = StHead->data();
    if (at[index].GetPass() == Pass)
        emit Hide_StuLog();
    qDebug()<<"This Slot happens";
    (*StHead)[index].show();
}

但是,当它显示时,它是一个空页面!什么问题?!我正在做的事有可能吗?!

这也是我将成员添加到我的 QVector 的方式

void MainWindow::StudentAdder(Student s)
{
    StHead->append(s);
}
4

1 回答 1

0

好的,很多事情都不是好的做法:

  1. 如前所述,不要使用声明为 like 的向量QVector<Student> * StHead;,而是直接使用QVector<Student> StHead;
  2. 相反,如果 Student 继承 QObject,特别是 QWidget,您可能宁愿将它们分配在堆上,因此实际上您有QVector<Student *> StHead;
  3. 使用 StHead[index] 直接访问向量,您的调用data()对眼睛来说是相当痛苦的;)
  4. 当您调用 时StHead[index]->show(),请确保要显示的小部件的父级已经可见,除非它没有父级(StHead[index]->parent()如果您不确定,请调用)。
于 2013-06-21T11:46:24.523 回答