Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt QML按钮独占组属性?_Qt_Qml_Qtquick2 - Fatal编程技术网

Qt QML按钮独占组属性?

Qt QML按钮独占组属性?,qt,qml,qtquick2,Qt,Qml,Qtquick2,我无法将ExclusiveGroup分配给我的可检查按钮 ExclusiveGroup { id: group onCurrentChanged: { if(current != null) { console.info("button checked...no!") current = null //current.checked = false <--- also this

我无法将ExclusiveGroup分配给我的可检查按钮

ExclusiveGroup {
    id: group

    onCurrentChanged: {
        if(current != null) {
            console.info("button checked...no!")
            current = null
            //current.checked = false    <--- also this
        }
    }
}


            Column {
                width: parent.width
                spacing: 0

                Button {
                    id: btnScan
                    flat: true
                    text: qsTr("But1")
                    width: parent.width
                    checkable: true
                    exclusiveGroup: group
                }
                Button {
                    id: btnWhiteList
                    flat: true
                    text: qsTr("But2")
                    width: parent.width
                    checkable: true
                    exclusiveGroup: group
                }
}
将鼠标悬停在“exclusiveGroup”上会显示一个工具提示:“无效的属性名exclusiveGroup”

我已经安装了Qt5.9.1。以下是我的导入声明:

import QtQuick 2.7
import QtQuick.Controls 1.4
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
import QtQuick.Controls.Material 2.2
我做错了什么


谢谢

您出现问题的原因如下:

import QtQuick.Controls 1.4
import QtQuick.Controls 2.0
两者都有一个
按钮
,但它们的API不同。
因此,首先要导入。然后,您导入。由于QML不知道您要使用哪一个,它将使用您最后导入的那个。如果您想更具体地说,在要使用的
按钮上,可以使用命名导入

然后,您可以根据需要使用两个版本中的
按钮
s:

OldCtrl.Button { // from the QtQuick.Controls 1.4 }
NewCtrl.Button { // from the QtQuick.Controls 2.0 }
您引用的文档是针对
QtQuick.Controls 1.x
,其中包含导入的
ExclusiveGroup
。因此,您试图混合来自两个库的内容,这两个库无法一起工作

有关
QtQuick.Controls 2.x的类似解决方案,请参阅

有关这两组控件的差异和用例的更多信息,请阅读:


    • 您出现问题的原因如下:

      import QtQuick.Controls 1.4
      import QtQuick.Controls 2.0
      
      两者都有一个
      按钮
      ,但它们的API不同。
      因此,首先要导入。然后,您导入。由于QML不知道您要使用哪一个,它将使用您最后导入的那个。如果您想更具体地说,在要使用的
      按钮上,可以使用命名导入

      然后,您可以根据需要使用两个版本中的
      按钮
      s:

      OldCtrl.Button { // from the QtQuick.Controls 1.4 }
      NewCtrl.Button { // from the QtQuick.Controls 2.0 }
      
      您引用的文档是针对
      QtQuick.Controls 1.x
      ,其中包含导入的
      ExclusiveGroup
      。因此,您试图混合来自两个库的内容,这两个库无法一起工作

      有关
      QtQuick.Controls 2.x的类似解决方案,请参阅

      有关这两组控件的差异和用例的更多信息,请阅读:


      • 这很奇怪。但是如果我还需要在2.0中定义的属性,我应该怎么做呢?有没有一种方法可以使用不同版本中定义的所有按钮属性?谢谢,ButtonGroup做到了,我接受了你的答案。然而,我仍然对版本控制感到困惑。如果你能帮我把事情弄清楚,我将非常感激:)真奇怪。但是如果我还需要在2.0中定义的属性,我应该怎么做呢?有没有一种方法可以使用不同版本中定义的所有按钮属性?谢谢,ButtonGroup做到了,我接受了你的答案。然而,我仍然对版本控制感到困惑。如果你能帮我把事情弄清楚,我将非常感激:)