2013-03-26 18 views
3

我有一個向UI添加QPushButton的問題。我這樣做:QMainWindowLayout :: addItem:請使用公共的QMainWindow API代替

QPushButton *mine[PlayForm->horizontal][PlayForm->vertical]; 
    for(int i=0; i<PlayForm->horizontal; i++) 
    { 
     for(int j=0; j<PlayForm->vertical; j++) 
     { 
      QWidget wdg; 
      mine[i][j] = new QPushButton(" ", &wdg); 
      mine[i][j]->setGeometry(size*i, size*j, size, size); 
      mine[i][j]->show(); 
      PlayForm->layout()->addWidget(mine[i][j]); 
     } 
    } 

那麼我該怎麼辦?!

+1

你的問題是什麼? – Ashot 2013-03-26 09:54:47

+0

QMainWindowLayout :: addItem:請使用公共QMainWindow API代替 這是我的問題,我不知道我應該怎麼做 – KhoC 2013-03-26 11:26:14

回答

6

您正在創建臨時父級窗口小部件,並使用QPushButton的引用 - 這是獲取段錯誤的好方法。

父窗口小部件參數默認爲nullptr,這是您可以接受的,因爲佈局擁有它的所有權。

//QWidget wdg; 
mine[i][j] = new QPushButton(" "); 

您得到的錯誤信息由question回答。簡而言之,這意味着你不應該修改QMainWindow佈局;您需要創建一個小部件,將其添加爲中央小部件,然後修改中央小部件的佈局。

+0

謝謝。但我不確定自己的理解是否正確。如果我使用指向'QPushButton'的指針,然後是新的,這是正確的? – KhoC 2013-03-26 11:25:42

+0

我已經更新了我的答案。 – cmannett85 2013-03-26 11:43:36

+0

在提問之前我看到了這個鏈接,但我沒有明白。你能解釋一下嗎? – KhoC 2013-03-26 11:56:49