У меня есть интерфейс в Qt 4.7, с которым я немного затрудняюсь вести себя так, как мне хочется.
Базовое описание желаемого поведения : пользователь делает выбор вполе со списком, которое заставляет запрос перейти к другой функции, которая возвращает объект 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 - карта, связывающая содержимое поля со списком с объектом с функцией xAxis () (возвращаяQHBoxLayout *) и функция init (), которая воссоздает макет после его удаления.m_current - это просто строка QString, которую я использую, чтобы сказать мне, какую мне нужно удалить.
Причина, по которой я ее удаляю: потому что именно это полчаса поиска в Google заставило меня поверить, что это правильная вещьделать.
Любая помощь высоко ценится.:)