QML中如何实现类似QGroupBox中的互斥按钮效果?

Cloud_Castle
博客专家认证
2014-07-15 04:23:47
一组多态按钮,但是同时只能有一个被“Checked”,C++中直接放在QGroupBox就可以了,但是QML中的GroupBox好像只提供了一个容器的作用,那这种情况下怎么实现呢?万分感谢!!
...全文
569 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cloud_Castle 2014-07-15
  • 打赏
  • 举报
回复
结贴了,exclusiveGroup.bindCheckable(myItem)这个里面的myItem我没改成自己这个Item的id。。。太马虎了,,,谢谢各位!
Cloud_Castle 2014-07-15
  • 打赏
  • 举报
回复
谢谢你们! 情况是这样的,我的按钮是ListView中的一个组件:
            Component {
                id: btnDelegate
                DrawerBtn {
                    ...
                    checkable: true
                    exclusiveGroup: btnExclusiveGroup
                    ...
                }
            }
然后按照manual为这个按钮添加了checkable等属性:
Item {
    id: root
    ...
    property bool checked: false
    property bool checkable: true
    property ExclusiveGroup exclusiveGroup: null
    onExclusiveGroupChanged: {
        if (exclusiveGroup)
            exclusiveGroup.bindCheckable(myItem)
    }
    signal toggled

    onCheckedChanged: {
        if ( checked == true )
            ...;
        else
            ...;
    }
    ...
但是最后依然可以有多个按钮的checked可以被置为true,并没有互斥效果。。 不知道缺了什么呢。。。应该不是委托组件的原因吧。。。再次谢谢大家!
彩阳 2014-07-15
  • 打赏
  • 举报
回复
同意。这样也可以应用在menuItem中。
foruok 2014-07-15
  • 打赏
  • 举报
回复
import QtQuick 2.0
import QtQuick.Controls 1.1

Rectangle {
    width: 320;
    height: 240;
    color: "gray";
    ExclusiveGroup {
        id: language;    
    }

    Column {
        anchors.centerIn: parent;
        CheckBox {
            text: "C++";
            exclusiveGroup: language;
        }
        CheckBox {
            text: "Java";
            exclusiveGroup: language;
        }        
        CheckBox {
            text: "Go";
            exclusiveGroup: language;
        } 
    }       
}
给你个示例。
foruok 2014-07-15
  • 打赏
  • 举报
回复
exclusiveGroup : ExclusiveGroup 看这个属性,就是用来实现你说的这个事儿的。

16,212

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧