Qt Quick:如何从 ComboBox 获取当前文本

Posted

技术标签:

【中文标题】Qt Quick:如何从 ComboBox 获取当前文本【英文标题】:Qt Quick: How to get the current text from ComboBox 【发布时间】:2017-12-19 06:51:47 【问题描述】:

我尝试从 ComboBox 的当前索引中获取文本。 model.get(scale).text 方法不起作用,它只获取第一个索引。

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
import QtQuick.Controls.Material 2.0
ApplicationWindow 
    visible: true
    width: 200
    height: 200
    title: qsTr("Hello World")
Column
    anchors.horizontalCenter: parent.horizontalCenter
    id:optionsColumn
    spacing: 5
    anchors.fill : parent
    anchors.topMargin    : 15
    anchors.bottomMargin : 15
    anchors.leftMargin :15
    anchors.rightMargin  : 15
    ComboBox 
        id: scale
        anchors.horizontalCenter: parent.horizontalCenter
        editable: true
        inputMethodHints: Qt.ImhDigitsOnly
        currentIndex: 1
        model: ListModel 
            id: model
            ListElement  text: "500" 
            ListElement  text: "1000" 
            ListElement  text: "2000" 
            ListElement  text: "5000" 
            ListElement  text: "10000" 
            ListElement  text: "25000" 
        
        onAccepted: 
            id:maccepted
            if (find(editText) === -1)
                model.append(text: editText)
        
    
    Button
        id:showtext
        text: "Scale to text"
        anchors.horizontalCenter: parent.horizontalCenter
        onClicked: 
            var a=parseFloat(model.get(scale).text)
            scaletext.text=a
        
    
    TextField
        id:scaletext
        anchors.horizontalCenter: parent.horizontalCenter
        readOnly: true
    


【问题讨论】:

你应该得到你的例子。 ComboBox.accepted已在QtQuick.Controls 2.2中引入,在导入的2.0中不可用 您对model.get(scale).text 有什么期望? model.get() 需要一个 int 索引,你传递一个 Q(t)Object 我希望它能够从组合框中获取当前文本。我从 Qt 文档中引用了它。现在 scale.currentText 按预期工作。 您似乎有奇怪的文档。我找不到采用QtObjectsget 方法。我只能找到this one. This 一个来自 ComboBox 文档。我引用了'onCurrentIndexChanged: console.debug(cbItems.get(currentIndex).text + ", " + cbItems.get(currentIndex).color)' 【参考方案1】:

玩得开心。

onClicked: 
  //var a=parseFloat(model.get(scale).text)
  scaletext.text = scale.currentText; 

【讨论】:

以上是关于Qt Quick:如何从 ComboBox 获取当前文本的主要内容,如果未能解决你的问题,请参考以下文章

这是 Qt Quick ComboBox 中的错误吗?

Qml Qt Quick Control 2:Text和ComboBox的字体大小区别

QT中ComboBox如何获取选中的文本内容??下面程序出错了,如何改正?

Qt Quick - 如何仅通过 c++ 代码与 qml 属性交互

如何从 Qt Objects(qlineedit,qcombobox) 中获取?

从Qt Quick WorkerScript调用Python方法