Files
comboboxtests/Main.qml
2023-02-26 22:06:39 +01:00

85 lines
2.9 KiB
QML

import QtQuick
import QtQuick.Controls
import QtQuick.Controls.Material
import QtQuick.Layouts
import QtQuick.Window
import Qt.labs.folderlistmodel 2.4
import comboboxtests 1.0
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
GridLayout {
anchors.fill: parent
columns: 2
// IconComboBox shall support qml ListModels
IconComboBox {
Layout.preferredHeight: 64
id: listModelComboBox
textRole: 'theText'
valueRole: 'theValue'
iconSourceRole: 'theIconUrl'
model: ListModel {
ListElement { theText: 'text0'; theValue: 'value0'; theIconUrl: 'qrc:/comboboxtests/icons/movinghead.png' }
ListElement { theText: 'text1'; theValue: 'value1'; theIconUrl: 'qrc:/comboboxtests/icons/movinghead.png' }
ListElement { theText: 'text2'; theValue: 'value2'; theIconUrl: 'qrc:/comboboxtests/icons/nebelmaschine.png' }
ListElement { theText: 'text3'; theValue: 'value3'; theIconUrl: 'qrc:/comboboxtests/icons/nebelmaschine.png' }
ListElement { theText: 'text4'; theValue: 'value4'; theIconUrl: 'qrc:/comboboxtests/icons/rgbstrahler.png' }
ListElement { theText: 'text5'; theValue: 'value5'; theIconUrl: 'qrc:/comboboxtests/icons/rgbstrahler.png' }
}
}
Label {
text: qsTr('currentValue: ') + listModelComboBox.currentValue
}
// IconComboBox shall support qml FolderListModels (to let the user select which icon to use)
IconComboBox {
Layout.preferredHeight: 64
id: folderListModelComboBox
textRole: "fileBaseName"
valueRole: "fileBaseName"
iconSourceRole: "fileUrl"
model: FolderListModel {
folder: "qrc:/comboboxtests/icons/"
showDirs: false
function getUrlForIcon(name) {
let myFolder = folder;
if (myFolder.length < 1 || myFolder.charAt(myFolder.length - 1) !== '/') {
myFolder = myFolder + '/';
}
return myFolder + name + ".png"
}
}
}
Label {
text: qsTr('currentValue: ') + folderListModelComboBox.currentValue
}
// IconComboBox shall support C++ QAbstractListModels (access to our internal database)
IconComboBox {
Layout.preferredHeight: 64
id: cppModelComboBox
textRole: 'theText'
valueRole: 'theValue'
iconSourceRole: 'theIconUrl'
model: CppDefinedModel {
}
}
Label {
text: qsTr('currentValue: ') + cppModelComboBox.currentValue
}
Item {
Layout.fillHeight: true
}
}
}