Qt - динамически добавлять QLineEdit в панель - PullRequest
1 голос
/ 20 марта 2012

это вопрос для программирования с помощью Qt / C ++. У меня есть поле со списком из двух предметов. Если текущий индекс для выбора равен 0, тогда QLineEdit не должен отображаться в макете под полем со списком. Если это 1, должен появиться QLineEdit. Он должен снова исчезнуть, если индекс снова равен 0. Примечательно, что изменение не должно влиять на другие элементы макета. Значения, уже введенные пользователем в другом QineEdit, должны оставаться на месте.

Возможно ли динамически изменять виджет? Как ты действовал?

С уважением.

1 Ответ

4 голосов
/ 20 марта 2012

Все объекты QWidget имеют функцию hide ().

Вы можете присоединить сигнал к сигналу currentIndexChanged поля со списком, и в этой функции вы реализуете любую логику, которую имеете в виду, и вызываете методскрыть свой QLineEdit.

Единственная проблема этого подхода заключается в том, что виджет Qt, когда он скрыт, не занимает места на экране, и это может привести к изменениям макета (в зависимости от того, как вы запрограммировали свой макет, некоторыедругие виджеты могут немного двигаться, например).Чтобы предотвратить это, вы можете сделать так, чтобы другой виджет появлялся там, где был QLineEdit (возможно, вызывая функцию show () и помещая 'placeholder' в тот же контейнер, что и LineEdit), только чтобы занять его пространство и оставить его там, или выможно использовать QStackedWidget, добавить туда два виджета и изменить его индекс.

Я бы порекомендовал вам прочитать следующий пример, он имеет некоторые полезные сведения о динамически изменяющихся вещах: Пример расширения Qt .

Также, если вы сомневаетесь, посмотрите на другие примеры, они действительно хорошо документированы и охватывают множество важных тем по Qt.

Удачи с вашим кодом:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...