我在Qt 4.7中有一個接口,我有點難以按照自己的意願行事。Qt佈局/小部件交互 - 佈局內的佈局
期望的行爲的基本描述:用戶在組合框中,這會導致查詢去返回QHBoxLayout,負責對象,它一般包括幾個標籤其他功能的選擇,線編輯等,這將調整界面上的佈局內容以刪除先前的選擇,並添加新的細節。
實際發生的事情:新的佈局正在出現,但舊的佈局仍然存在,因此它們彼此重疊,導致一團糟。
這是代碼我有狹槽,該currentIndexChanged信號被鏈接到:
void updateAxisLabels(const QString & value)
{
if (m_current != "")
{
QHBoxLayout* xOld = m_transforms[m_current]->xAxis();
m_uiForm.layoutXAxis->removeItem(m_transforms[m_current]->xAxis());
delete m_transforms[m_current]->xAxis();
m_transforms[m_current]->init();
}
m_uiForm.layoutXAxis->addLayout(m_transforms[value]->xAxis());
m_current = value;
m_uiForm.layoutXAxis->update();
}
這裏m_transforms是地圖的組合框的內容鏈接到的對象與所述x軸()函數(返回一個QHBoxLayout *)和一個init()函數,它將在刪除佈局時重新創建佈局。 m_current只是一個QString,我用它來告訴我需要刪除哪一個。
我刪除它的原因:因爲這是半小時的谷歌搜索導致我相信是正確的做法。
任何幫助非常感謝。 :)
'm_uiFormLayout.layoutXAxis'是什麼類型? QHBoxLayout,負責/ QXBoxLayout/QGridLayout? – beduin 2011-05-11 14:56:13
hi @beduin:這是一個QHBoxLayout。 – TZHX 2011-05-11 16:08:11
我想也許你應該使用[takeAt](http://doc.trolltech.com/latest/qlayout.html#takeAt)和[count](http:// doc)刪除以前存儲在'layoutXAxis'中的項目。 trolltech.com/latest/qlayout.html#count)成員函數。 – beduin 2011-05-11 18:51:15