如何使组合框项目在 qml 中不可选择?

Posted

技术标签:

【中文标题】如何使组合框项目在 qml 中不可选择?【英文标题】:How to make combobox item not selectable in qml? 【发布时间】:2020-01-31 10:12:40 【问题描述】:

如果 itemSwitch1 为“ON”,我想让 itemSwitch2 不可选 我怎样才能拒绝访问 itemSwitch2

function setSelectable(item, state)

    item.editable = state


StyledComboBox 
   id: itemSwitch1
   Layout.row: 0
   Layout.column: 1
   model: ["ON", "OFF"]
   currentIndex: (root.systemInfo.itemEn) ? 0 : 1
   onUpDownPressed:
   
       currentIndex = !currentIndex;
   
   onEditFinished: 
      dashboard.setSelectibale(itemSwitch2, false)
      optionProvider.upDate(currentIndexItem.text)
      itemLabel1.focus = true;
      updateTimer.running = true;
    

【问题讨论】:

我认为你可以使用enabled 我尝试将启用设置为“false”,但该项目仍然可选择! 请分享一个最小的工作示例,以便其他 stack-overflowers 可以尝试复制和帮助 这能回答你的问题吗? ComboBox disable an item at a particular index 不,不是真的!,事实上,如果 itemSwitch1.text 为“ON”,则希望禁用 itemSwitch2 的选择 【参考方案1】:

这只是一个例子,但它确实有效:

import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 1.4

Window 
    visible: true
    width: 640
    height: 480

    Row 
        spacing: 2
        ComboBox 
            id: one
            width: 200
            model: [ "ON", "OFF" ]

            onCurrentIndexChanged: 
                if (currentIndex === find("ON")) 
                    two.enabled = false
                 else
                
                    two.enabled = true
                
            
        

        ComboBox 
            id: two
            width: 200
            model: [ "HELLO", "BYE" ]
        
    

【讨论】:

以上是关于如何使组合框项目在 qml 中不可选择?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据组合框选择使子表单显示数据?

MFC 组合框不可编辑

如何让组合框选择与 ExtJS6 中显示的值不同的值?

如果选择了某些组合框项,则使文本块可见-MVVM

带有复选框的 QML 组合框

如何使文本框显示与其控件不同的字段?