Этот вопрос немного конкретный, но я не смог найти кого-то с той же проблемой или чистого решения проблемы.Как создать эквивалент ListView QtWidgets в Qt Quick Controls?
Я создаю программу Qt Quick, и я хочу использовать QListView, как он появляется в QtWidgets. This QtWidgets program имеет три таких вида, с проверяемыми элементами (что необязательно: не все QListViews имеют проверяемые элементы).
Поскольку у Qt Quick Components нет эквивалента QListView, я решил сделать свой собственный из существующих компонентов. И результат ... meh. Это выглядит как this и точно не ведет себя одинаково. Нажав на текст/пробел элемента , проверьте элемент, а не выделяя его. И граница просто уродливая и не появляется в среде GTK-themed. Он также не подчиняется пользовательским темам рабочего стола, потому что фон предметов будет всегда быть белым.
Код для этого пользовательского компонента является довольно кратким, и выглядит следующим образом:
import QtQuick 2.4
import QtQuick.Controls 1.3
// GroupBox creates a border... most of the time. Not in GTK envs
GroupBox {
id: root
property var model: null
// This wraps the ListView up with a scrollbar
ScrollView {
anchors.fill: parent
ListView { // This is the view component
anchors.fill: parent
model: root.model
// This is the white box that the CheckBox is drawn on
delegate: Rectangle {
width: parent.width
height: box.height
// This is the actual item
CheckBox {
id: box
anchors.fill: parent
text: thing // `thing` is just a placeholder value from the model
}
}
}
}
}
Я не вижу, граничащие именно проблема. На скриншоте все в порядке, не так ли? –
Это граница вокруг ListView. [Это увеличенное изображение] (http://i.imgur.com/kP5sDGl.png) должно показать это довольно хорошо. В окне слева находится QtWidgets QListView. Окно справа - мое собственное устройство ListView. –
Белый фон связан с использованием 'Rectangle' в качестве верхнего элемента' делегата'. Просто используйте «Элемент», чтобы иметь прозрачный фон или установить «цвет: прозрачный» в текущем коде - первый подход лучше. Кроме того, «CheckBox» не должен заполнять делегат, чтобы «MouseArea» можно было использовать для установки «currentIndex» и, таким образом, переместить компонент «highlight» в текущий выбранный «CheckBox». Эти изменения должны действительно улучшить общий внешний вид. К сожалению, я думаю, что получение идеального тематики было бы довольно трюком и, вероятно, невозможным. – BaCaRoZzo