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 按预期工作。
您似乎有奇怪的文档。我找不到采用QtObjects
的get
方法。我只能找到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 获取当前文本的主要内容,如果未能解决你的问题,请参考以下文章
Qml Qt Quick Control 2:Text和ComboBox的字体大小区别
QT中ComboBox如何获取选中的文本内容??下面程序出错了,如何改正?
Qt Quick - 如何仅通过 c++ 代码与 qml 属性交互