QML中的ComboBox SQL QT 5.10.1

问题描述 投票:0回答:1

使用QT 5.10.1,我需要用我的JS中的SQLite查询填充QML中的ComboBox列表。

我的JS的代码是:

function combobox(Prowid)
{
var db = dbGetHandle()
db.transaction(function (tx) {
    var results = tx.executeSql(
                'SELECT description FROM part_log where rowid = ? order by description asc',[Prowid])
        for (var i = 0; i < results.rows.length; i++) {
            listModel.append({
                             id: results.rows.item(i).rowid,
                             checked: " ",
                             description:results.rows.item(i).description
                             })
        }
    })
}

我需要comboBox包含描述列数据。

你可以帮帮我吗?

非常感谢你!

qt sqlite combobox qml qt5
1个回答
0
投票

这样的事情(抱歉代码格式不好)。此外,你必须从某个地方传递你的Prowid参数。

ComboBox {
    id: comboBoxContainer
    width: 400
    height: parent.height

    textRole: "text"
    model: ListModel {
        id: listModel
    }

    delegate: ItemDelegate {
        width: comboBoxContainer.width
        height: 50
        text: model.text
        font.pixelSize: 18
        font.weight: comboBoxContainer.currentIndex === model.index ? Font.DemiBold : Font.Normal
    }

    contentItem: Text {
        leftPadding: 0
        rightPadding: comboBoxContainer.indicator.width + comboBoxContainer.spacing
        text: comboBoxContainer.displayText
        horizontalAlignment: Text.AlignLeft
        verticalAlignment: Text.AlignVCenter
        font.family: "Ubuntu"
        font.weight: Font.Normal
        font.pixelSize: 18
        elide: Text.ElideRight
    }
}

Component.onCompleted: {
    var db = dbGetHandle()
    db.transaction(function (tx) {
        var results = tx.executeSql(
                    'SELECT description FROM part_log where rowid = ? order by description asc',[Prowid])
        for (var i = 0; i < results.rows.length; i++) {
            listModel.append({
                                 id: results.rows.item(i).rowid,
                                 checked: " ",                                  
                                 text:results.rows.item(i).description
                             });
        }
    }        
}
© www.soinside.com 2019 - 2024. All rights reserved.