85 lines
2.9 KiB
QML
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
|
||
|
}
|
||
|
}
|
||
|
}
|