wxLua - нужна динамическая перекомпоновка при изменении текста в элементе управления wxStaticText
У меня есть статический текстовый элемент управления, который изменяет его содержимое в зависимости от действий пользователя. Он находится в горизонтальном сортировщике с несколькими другими элементами управления. Когда текст изменяется, элемент управления динамически обновляет свой размер, но он не динамически корректирует свою позицию в классификаторе, то есть перекрывает элемент управления, пока я не изменю размер главного окна вручную, после чего все снова выглядит хорошо.
Как сделать так, чтобы сортировщик автоматически перенастраивался так, чтобы все подходило?
2 ответа
Самый простой способ - позвонить Layout()
на верхнем уровне окна родителя возвращается wxGetTopLevelParent()
, Это не самый эффективный способ, так как это может привести к чрезмерной разметке, и вы всегда можете ограничить макет только самым глубоким классификатором или окном, содержащим окно, размер которого изменился, размер которого необходимо обновить, но, опять же, сделав это на уровне TLW это самый простой способ.
Хорошо, Stackru указал мне на некоторые другие вопросы, которые содержали мой ответ. Мне нужно вызвать Layout() на Sizer. Но это было не так просто. Я использовал файл xrc для графического интерфейса и не знал, как получить дескриптор для классификатора. До тех пор, пока я не узнал, я мог вызывать GetContainedSizer() для элемента управления.
Но это было не так просто.
Будучи новичком в wxWidgets и пытаясь найти много разных способов решения этой проблемы, у меня был статический текстовый элемент управления в его собственном классификаторе, а также соседние кнопки в классификаторе и все эти классификаторы в горизонтальном боксе.
Избавляемся от этих лишних калибровщиков и контролируем всех братьев и сестер одного горизонта. коробка сайзера сработала... почти! Но это было не так просто.
Элементы управления родного брата работали нормально, но ограничитель не оставался центрированным в своей области, т. Е. Элементы управления были смещены вправо. Поэтому я должен был подойти к следующему сортировщику. Но я не мог вызвать GetConistingSizer() на имеющемся у меня классификаторе, поэтому мне пришлось получить элемент управления, являющийся одним из родственных элементов классификатора, и вызвать для этого функцию GetContainedSizer(). И до тех пор, пока я делал макет на этом сайте, все работало! Все очень просто.