我在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