Как мне создать компонент ленты в QT?

Лента — это следующий компонент: Лента

Я хотел бы создать компонент, используя QtQuick (QML) и PySide2 в качестве бэкэнда.


Текущие решения, которым я научил: я знаю, что могу создавать кнопки с помощью TopBar, например: Группа верхних кнопок ленты

Я могу создать три разных делегата для трех разных типов кнопок:

Делегат 1:

введите здесь описание изображения

Делегат 2:

введите здесь описание изображения

Делегат 3:

введите здесь описание изображения

И измените их, указав как «тип» в модели.

---------------------------------------------------------

Но как мне их соединить? Я учил: • ListView может иметь только одну ориентацию, поэтому я не могу построить его, используя это. • Grid View, но он также имеет ту же проблему с одной возможной ориентацией.

Может кто-нибудь, пожалуйста, дайте мне представление о том, как я могу создать ленточный компонент? Как должна быть указана модель?

Как добавить группу кнопок внизу, например: введите здесь описание изображения

Он должен автоматически расширяться в соответствии с количеством кнопок в группе.


person Rajdeep Chatterjee    schedule 01.05.2020    source источник
comment
Попробуйте поиграться с обычным повторителем? doc.qt.io/qt-5/qml-qtquick-repeater. html   -  person hyde    schedule 01.05.2020
comment
Не могли бы вы немного рассказать мне о подходе повторителя? @хайд   -  person Rajdeep Chatterjee    schedule 02.05.2020


Ответы (1)


Позвольте мне кратко рассказать, что вы можете сделать здесь.

  1. создайте отдельные элементы (файлы .qml) для slides, fonts и paragraphs. Это создает разделение интересов.

  2. расположите те элементы, которые вы создали на 1-м шаге, в родительском элементе, который просто соединяет их вместе посредством привязки или может быть просто внутри row.

  3. Теперь для каждого элемента дизайна. Возьмем пример slides

Здесь вы можете расположить элементы в два ряда, второй ряд будет содержать slides, а первый ряд будет содержать остальные элементы.

теперь первую строку можно разделить на две колонки
1-я колонка -> new slide
2-я колонка -> layout, reset, section (здесь, если у вас есть похожие элементы, вы можете просто использовать повторитель)

В основном это тот же самый дизайн для font и paragraph. Вы делите их на строки и столбцы и размещаете в них свои элементы.

person cppiscute    schedule 01.05.2020
comment
Большое спасибо. Это отличный подход, я попробую это. Не могли бы вы рассказать мне, как я могу сделать это динамичным? Например: я хочу иметь модель для слайдов как: {Имя: новый слайд, значок: ᖆ, делегат: BigButton{}, действие: a.launch()} и т. д. Учитывая это, он должен динамически сгенерируйте его... ------ Что лучше: описанный выше динамический подход или предложенный вами статический подход? - person Rajdeep Chatterjee; 02.05.2020