Список расширяемых элементов, который содержит пользовательские (и сложные) виджеты - PullRequest
0 голосов
/ 07 июня 2019

Этот вопрос больше относится к знаниям инфраструктуры Qt, чем к проблеме кодирования.

Мне интересно, существует ли в Qt Framework контейнер, который отображает представление списка расширяемых / складываемых элементов.Элементы намного сложнее, чем простые QLabel s.

Чтобы быть более точным, мне нужен список пользовательских виджетов.Каждый виджет имеет QHBoxLayout (чтобы каждый элемент помещался в «линию»), который содержит внутренние виджеты, в том числе расширяющуюся / сворачивающуюся кнопку переключения (в первой / левой позиции макета).Когда кнопка «Развернуть / Свернуть» включена, я хочу видеть панель контейнера, отображаемую ниже и показывающую более подробную информацию (еще один сложный виджет).Очевидно, что когда кнопка разворачивания / свертывания отключена, эта дополнительная панель должна скрываться.

Мой вопрос: существует ли такая структура дизайна gui в структуре Qt или нет?Я не смог найти такой объект в документации Qt, но, возможно, я пропустил его, так как не знаю, по какому имени он может называться.

Я мог бы сделать это с более или менее хитрыми обходными путями, так какпоказано здесь, например .Но я хочу быть уверен, что я не буду реализовывать класс, который может уже существовать в платформе Qt, так как этот вид контейнера довольно распространен во многих приложениях.

Я был бы очень признателен, если бы кто-то знал о Qtрамки могли бы просветить меня об этом.

1 Ответ

0 голосов
/ 14 июня 2019

Подводя итог, вопрос здесь был разделен на две части:

  • О существовании расширяемого виджета.
  • О существовании представления списка, которое может обрабатывать любые виджеты включая расширяемые .

Поскольку таких контейнеров не существует в среде Qt, я написал свою собственную реализацию этих C ++, которую можно найти здесь qt_widgets_extensions.hpp я определил qt_ext::QExpandableWidget и qt_ext::QListWidgetView, которые полностью отвечают на оба аспекта вопроса.Вы можете проверить ссылку для более подробной информации о функциях, предоставляемых этими контейнерами.

Я думаю, что было бы легко перевести эту реализацию на другой язык, например Python .

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