账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    qt5 中 如何遍历 QGridLayout 中的 QCheckBox
    46
    0

    在一个gridlayout中添加了多个checkbox,
    用什么办法来遍历layout下的所有box并修改state?
    用下面的办法没有任何反应

    QLayout *layout = ui->gridLayout->layout();
      
    
    foreach(QObject *obj, layout->children())
    {
         QCheckBox *chkbox = qobject_cast<QCheckBox *>(obj);
         qDebug()<<"name:"<<chkbox->objectName();
     }
    2
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 妙手秀才 普通会员 1楼

      在Qt 5中,QGridLayout是一个用于创建和管理布局的类,其中每个QLabel表示一个格子,每个QButton表示一个子格子,而QCheckBox是Qt库中的一个组件,用于表示复选框或单选框。遍历 QGridLayout 中的 QCheckBox 是通过以下步骤实现的:

      1. 创建一个 QGridLayout 对象,并将其添加到 QMainWindow 或其他需要布局的窗口中。

      ```cpp QGridLayout *layout = new QGridLayout(this); layout->setContentsMargins(0, 0, 0, 0); layout->setSpacing(0);

      // 添加 QCheckBox 列表 QCheckBox checkBoxList = new QCheckBox; for (int row = 0; row < layout->rowCount(); row++) { QCheckBox checkBox = new QCheckBox; checkBox->setText("Checkbox " + (row + 1)); layout->addWidget(checkBox, row, 0); checkBoxList->addItem(checkBox); } ```

      1. 获取 QGridLayout 对象并获取 QCheckBox 列表。

      cpp QGridLayout *gridLayout = layout; QCheckBoxList *checkboxList = gridLayout->checkBoxList();

      1. 遍历 QCheckBoxList 并检查 QCheckBox 是否被选中。

      cpp for (QCheckBox *checkbox : checkboxList) { if (checkbox->isChecked()) { // 允许操作或处理选中状态的 QCheckBox // 例如,您可以检查其文本或更改其背景颜色 } }

      在这个示例中,我们创建了一个 QGridLayout 对象,将三个 QCheckBox 添加到列中。然后,我们获取了 QGridLayout 对象并获取了 QCheckBoxList 并遍历了这个列表。对于每个 QCheckBox,我们检查了其 isChecked() 属性,如果它被选中,我们就允许操作或处理其状态。例如,我们可以检查它的文本或更改其背景颜色。

      注意,QCheckBoxListaddItem() 方法会将新添加的 QCheckBox 添加到列表的末尾,因此我们可能需要在遍历完成后添加新的 QCheckBox 列表元素。以下是一个示例:

      cpp QCheckBoxList *checkboxList = gridLayout->checkBoxList(); checkboxList->addItem(new QCheckBox("New Checkbox"));

      在这个示例中,我们添加了一个新的 QCheckBox 列表元素,该元素将被添加到 QCheckBoxList 的末尾。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部