Виджет KDE - проблема с размером иконки и родительского элемента - PullRequest
0 голосов
/ 31 января 2019

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

Для этого я добавил код iconSize: getIconSize(combo_currentIndex) в каждый ListDelegate экземпляр ,Здесь getIconSize - это простая функция javascript, которая возвращает указанное значение из units.iconSizes.

Затем я попробовал два подхода:

Подход 1 : In ListDelegate.qml Я создал property alias iconSize: icon.Layout.minimumWidth. Не работает , виджет загружается и выдает эту ошибку: ListDelegate.qml:41:30: Invalid alias target location: Layout.

Подход 2 : В ListDelegate.qmlЯ создал property int iconSize: units.iconSize.medium (я выбрал средний, потому что это опция по умолчанию в настройках пользователя).Затем я изменил свойства Layouts PlasmaCore.IconItem следующим образом:

Layout.minimumWidth: iconSize
Layout.maximumWidth: iconSize
Layout.minimumHeight: iconSize
Layout.maximumHeight: iconSize

На этом этапе размер значков изменяется в соответствии с настройками пользователя.Но высота элемента ListDelegate остается фиксированной (как и при использовании units.iconSize.medium), поэтому значки перекрываются, когда пользователь выбирает размер значка больше среднего.

Что можно сделать, чтобы решить эту проблему?

1 Ответ

0 голосов
/ 02 февраля 2019

После прочтения документов я полностью понимаю, как работает Макет .

Решение подхода 2 довольно просто.Мне также нужно было установить правильные значения для свойств макета minimumHeight, maximumHeight и preferredHeight родительского элемента (который является RowLayout строкой ):

Layout.minimumHeight: units.iconSizes.tiny
Layout.maximumHeight: units.iconSizes.enormous
Layout.preferredHeight: iconSize

Код должен быть понятен.При этом родительский элемент RowLayout может правильно изменить свою высоту, чтобы разместить значок.

...