我无法将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
}
}
文档明确指出Button确实具有exclusiveGroup属性http://doc.qt.io/qt-5/qml-qtquick-controls-button.html#exclusiveGroup-prop。但是,当我运行该示例时,我收到此错误:
qrc:/main.qml:48 Cannot assign to non-existent property "exclusiveGroup"
将鼠标悬停在“exclusiveGroup”上会显示一个工具提示:“无效的属性名称exclusiveGroup”。
我安装了Qt 5.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
我做错了什么?
由于
答案 0 :(得分:4)
您遇到问题的原因是:
import QtQuick.Controls 1.4
import QtQuick.Controls 2.0
两者都有Button
,但它们有不同的API
首先,您导入Button
from QtQuick.Controls 1.4
。然后导入Button
from QtQuick.Controls 2.0
。由于QML不知道你要使用哪一个,它将采用你输入的最后一个。如果您想要更具体,您想要使用Button
,可以使用名为imports
import QtQuick.Controls 1.4 as OldCtrl
import QtQuick.Controls 2.0 as NewCtrl
然后您可以根据需要使用两个版本中的Button
:
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
ButtonGroup
有关两组控件的差异和用例的更多信息,请阅读: