【发布时间】:2016-11-22 12:37:55
【问题描述】:
我在 qml 中有一个组合框作为 TableViewColummn,我将其定义如下:
import QtQuick 2.3
import QtQuick.Window 2.2
import QtQuick.Layouts 1.1
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
ListModel {
id: comboModel
ListElement {
text: ""
Index: -1
Dims: -1
}
}
TableViewColumn {
id: imageTypeList
role: "ImageType"
title: "Image Type"
width: 100
delegate: Rectangle {
ComboBox {
anchors.verticalCenter: parent.verticalCenter
anchors.margins: 2
model: comboModel
onActivated : {
console.log(comboModel.get(index).Index)
}
}
}
}
我的问题是,如果可以给disable 组合框菜单项提供ComboBox 中的项目索引。所以,我不想更改底层模型,但实际上只是简单地禁用该项目并且不允许用户选择它。
【问题讨论】:
-
你应该澄清你的问题。目前尚不清楚您的意思是什么索引 - 表行或
ComboBox一个?要禁用指定行的组合框,您可以执行ComboBox { enabled: styleData.row !== 2 } -
@folibis 是否可以通过指定索引的 javascript 代码执行此操作?
-
@folibis 我可以在 javascript 中执行
enabled = false但这会禁用整个组件, -
comboModel的定义是什么?您能否将其定义为QStandardItemModel并适应this olderQComboBoxtechnique? -
您需要为您的
ComboBox指定delegate,您应该在其中禁用特定项目。
标签: qt qml qtquick2 qtquickcontrols