QT入门Buttons之QCheckBox

目录

一、界面布局介绍

1、布局器中的位置及使用

2、常用属性

二、属性功能介绍

1、常用信号

2、测试信号stateChanged(int)

 3、组合框效果

三、Demo展示


此文为作者原创,转载标明出处!

一、界面布局介绍

1、布局器中的位置及使用

 QCheckBox复选框常用的属性是多个设置,允许多选存在

2、常用属性

        跟QPushButton属性类似,这边加入个注意事项,就是通常从界面中拖动个在designer默认是没有独占性的,就是默认是多选的,但是我们可以勾上如下的属性,就能设置成单选了,如下:

 F5试下,发现只能勾选上一个了

二、属性功能介绍

1、常用信号

 发现除了基本的点击信号之外,还有个stateChanged(int)

2、测试信号stateChanged(int)

        拖动两个QCheckBox在界面上,同时将界面中选中某一个右击转到槽,信号就选择stateChanged,同时对两个都进行这个操作,会发现xx.cpp文件中多了两个槽函数,此时我们就需要在槽函数中进行添加如下:

void MainWindow::on_checkBox_stateChanged(int arg1)
{
    if(arg1==Qt::CheckState::Checked)
    {
        ui->checkBox_2->blockSignals(true);
        ui->checkBox_2->setCheckState(Qt::CheckState::Unchecked);
        ui->checkBox_2->blockSignals(false);
    }
    else
    {
        qDebug()<<u8"check1未选中";
    }
}

void MainWindow::on_checkBox_2_stateChanged(int arg1)
{
    if(arg1 ==Qt::CheckState::Checked)
    {
        ui->checkBox->blockSignals(true);
        ui->checkBox->setCheckState(Qt::CheckState::Unchecked);
        ui->checkBox->blockSignals(false);
    }
    else
    {
        qDebug()<<u8"check2未选中";
    }
}

 3、组合框效果

可以加入组合框,使用QButtonGroup来测试下效果:

添加声明:

QButtonGroup *m_buttonGroup;

构造函数添加:

 m_buttonGroup = new QButtonGroup(this);
 m_buttonGroup->addButton(ui->checkBox, 0);
 m_buttonGroup->addButton(ui->checkBox_2, 1);
 m_buttonGroup->addButton(ui->checkBox_3, 2);

 connect(m_buttonGroup, SIGNAL(buttonClicked(int)),
              this, SLOT(btnGroupSlot(int)));

最后槽函数中:

void MainWindow::btnGroupSlot(int idbtn)
{
    if (m_buttonGroup->button(idbtn)->isChecked())
    {
       switch(idbtn)
       {
       case 0:
           qDebug("checkBox is checked.");
           break;
       case 1:
           qDebug("checkBox2 is checked.");
           break;
       case 2:
           qDebug("checkBox3 is checked.");
           break;
       default:
           break;
       }
    }
}

实现效果:

三、Demo展示

我放到精灵球中了:

 推荐博客:精灵球Plus介绍_清风徐来Groot的博客-CSDN博客

 百度云盘:链接:https://pan.baidu.com/s/11b634VvKMIsGdahyBLpZ3Q   提取码:6666 

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt中,可以通过事件过滤器来实现全局使用QCheckBox的功能。首先,你需要在你的应用程序中创建一个事件过滤器类,例如CMyEventFilter。然后,在你的应用程序的初始化代码中,使用qApp对象安装事件过滤器,如下所示: CMyEventFilter *eventFilter = new CMyEventFilter(); qApp->installEventFilter(eventFilter); 在CMyEventFilter类中,你可以重写eventFilter函数来处理QCheckBox的全局使用。在eventFilter函数中,你可以根据需要检查事件类型和目标对象,并执行相应的操作。例如,你可以检查鼠标按下事件,并判断是否是QCheckBox对象,然后执行相应的逻辑。 下面是一个示例代码: bool CMyEventFilter::eventFilter(QObject *watched, QEvent *event) { if (event->type() == QEvent::MouseButtonPress) { QMouseEvent *mouseEvent = dynamic_cast<QMouseEvent *>(event); if (mouseEvent->buttons() == Qt::LeftButton) { if (qobject_cast<QCheckBox *>(watched)) { // 执行QCheckBox的全局使用逻辑 qDebug() << "QCheckBox被点击了" << endl; } } } return QObject::eventFilter(watched, event); } 通过这种方式,你可以在整个应用程序中捕获并处理QCheckBox的点击事件,实现全局使用的效果。 #### 引用[.reference_title] - *1* *2* *3* [QT之鼠标事件的全局捕获](https://blog.csdn.net/error_again/article/details/109474392)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值