2013-06-20 50 views
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); 
} 
+0

如果頂層窗口小部件出現,但它不包含其他窗口小部件,那麼問題代碼就是'Student'類。作爲一個方面說明,幾乎沒有一個很好的理由在堆上創建容器 - 那麼爲什麼? – cmannett85

+0

添加Student的定義。它是一個QWidget嗎?或者是Student :: show()你自己的方法? –

回答

0

好,很多東西都不是好的做法:

  1. 如前所述,不使用矢量聲明如下QVector<Student> * StHead;,但直接一個QVector<Student> StHead;
  2. 相反,如果學生繼承QObject,特別是QWidget,你可能更願意把它們分配在堆上,因此你實際上已經有了QVector<Student *> StHead;
  3. 訪問直接與StHead [指數]的載體,用data()您的通話是相當痛苦的眼睛;)
  4. 當你調用StHead[index]->show(),確保顯示的窗口小部件的父母已經是可見的,除非它有沒有父母(如果您不確定,請致電StHead[index]->parent())。