0

「Student」という名前のクラスがあります(このクラスにはフォームがあります)。メインウィンドウには、このクラスからの 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. 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 に答える