0
一塊我的代碼:需要unmap signalmapper嗎?
signalMapper = new QSignalMapper(this);
for(int i=0; i<result.count(); ++i)
{
drawpushb(result.at(i).ptr,pushb.at(i),ratio,0); // draw pic in pushb.
grid->addWidget(pushb.at(row*opregel+c),row,col);
connect(pushb.at(i), SIGNAL(clicked()), signalMapper, SLOT(map()));
signalMapper->setMapping(pushb.at(i), i);
if(++col==opregel)
{
++row;
col=0;
}
if((row*opregel + col)==totalbuttons)
break;
}
connect(signalMapper, SIGNAL(mapped(int)),this, SLOT(goto_tab(int)));
有創建按鈕的列表,它們被放置在GridLayout。 這是放置在一個小部件,並將其放入qtabwidget。
好的。 現在這段代碼被執行多次。我的tabwidget被清空,首先在該選項卡上的小部件被刪除,所以我的按鈕也會被刪除。但是映射器會發生什麼?這些按鈕不再存在。之後,將爲新按鈕創建一個新的映射器。 舊的會發生什麼?它仍然在那裏,什麼都不做? 我是否應該刪除信號映射器(如何?)。
我是新來的QT,它有時會讓我困惑,什麼被QT刪除,我應該刪除自己。
漢克,謝謝你的回覆!我必須首先消化:-)。我現在做的方式與您的解決方案有很大的不同嗎?現在我將所有映射的按鈕放在一個小部件中,並放入qtabwidget中。當我刪除那個小部件時,這些按鈕是不是用mapper刪除的?我希望在刪除標籤之前手動刪除我的小部件。我喜歡理解,但我需要時間。 –
將按鈕放在小部件上時,它們將在刪除小部件時自動刪除。 – hank